Kivy Tutorial3 (挫折)

Python

#-*- coding: utf-8 -*-

from kivy.app import App

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.listview import ListItemButton

from kivy.properties import ObjectProperty, ListProperty

from kivy.core.text import LabelBase, DEFAULT_FONT

from kivy.resources import resource_add_path

#API

from pyndlsearch.client import SRUClient

from pyndlsearch.cql import CQL

#フォントの変更

resource_add_path(“./fonts”)

LabelBase.register(DEFAULT_FONT, “mplus-2c-regular.ttf”)

#search_results(ListView)の項目をボタンにする

class BookButton(ListItemButton):

book = ListProperty()

class SearchBookForm(BoxLayout):

search_input = ObjectProperty()

search_results = ObjectProperty()

def __init__(self,**kwargs):

super(SearchBookForm, self).__init__(**kwargs)

#検索結果を辞書型に変換

def books_args_converter(index, data_item):

title, creator, language, publisher = data_item

return {“book”: (title,creater,language,publisher)}

#検索結果をdataに格納

def search_book(self):

cql = CQL()

cql.title = self.search_input.text

year = self.ids[‘year’].text

month = self.ids[‘month’].text

day = self.ids[‘day’].text

cql.fromdate = year + ‘-’ + month + ‘-’ + day

client = SRUClient(cql)

client.set_maximum_records(int(self.ids[‘number’].text))

srres = client.get_srresponse()

books = [(d.recordData.title, d.recordData.creator, d.recordData.language, d.recordData.publisher) for d in srres.records]

self.search_results.adapter.data.clear()

self.search_results.adapter.data.extend(books)

self.search_results._trigger_reset_populate()

#詳細画面の情報

class BookInfo(BoxLayout):

book = ListProperty([‘’,’’,’’,’’])

#詳細画面に書籍情報を格納して詳細画面に移動

class BookSearchRoot(BoxLayout):

def __init__(self,**kwargs):

super(BookSearchRoot, self).__init__(**kwargs)

def show_book_info(self, book):

book_convs = [x if x != None else ‘’ for x in book]

self.bookinfo.book = book_convs

self.carousel.load_slide(self.bookinfo)

#初期クラス

class BookSearchApp(App):

def __init__(self, **kwargs):

super(BookSearchApp, self).__init__(**kwargs)

self.title = ‘ウィンドウ名’

pass

if __name__ == “__main__”:

BookSearchApp().run()

test.kv

#: import main main

#: import ListAdapter kivy.adapters.listadapter.ListAdapter

BookSearchRoot

<BookSearchRoot>

carousel: carousel

booklists: booklists

bookinfo: bookinfo

BoxLayout:

orientation: “vertical”

ActionBar:

ActionView:

ActionPrevious:

title: “図書検索”

with_previous: False

app_icon: “./icon/32player.png”

ActionButton:

text: “一覧”

#一覧画面に移動する

on_press: app.root.carousel.load_slide(app.root.booklists)

ActionButton:

text: “詳細”

on_press: app.root.carousel.load_slide(app.root.bookinfo)

Carousel:

id: carousel

SearchBookForm:

id: booklists

BookInfo:

id: bookinfo

<SearchBookForm>

orientation: “vertical”

search_input: search_box

search_results: search_results_list

BACK