Kivy Tutorial3 (挫折)
#-*- 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