0
我正在使用GUI來管理庫存(Python 3.4,Sqlite3和Kivy 1.9.1)並且這個想法是能夠基於它們不同的特徵識別產品,被列在數據庫中。動態表格顯示使用kivy和sqlite 3
有沒有辦法使用kivy顯示sqlite表?我認爲ListView
可能是解決方案,但我真的很努力去理解如何用args_converter
來製作一個CustomListItem
,以獲得其中有不同標籤的多個列。
我正在使用GUI來管理庫存(Python 3.4,Sqlite3和Kivy 1.9.1)並且這個想法是能夠基於它們不同的特徵識別產品,被列在數據庫中。動態表格顯示使用kivy和sqlite 3
有沒有辦法使用kivy顯示sqlite表?我認爲ListView
可能是解決方案,但我真的很努力去理解如何用args_converter
來製作一個CustomListItem
,以獲得其中有不同標籤的多個列。
是的,你可以使用RecycleView
這個。
試試這個例子:
import sqlite3 as lite
con = lite.connect('test.db')
cur = con.cursor()
try:
with con:
cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT)")
cur.execute("INSERT INTO Cars VALUES(1,'Audi',52642)")
cur.execute("INSERT INTO Cars VALUES(2,'Mercedes',57127)")
cur.execute("INSERT INTO Cars VALUES(3,'Skoda',9000)")
cur.execute("INSERT INTO Cars VALUES(4,'Volvo',29000)")
cur.execute("INSERT INTO Cars VALUES(5,'Bentley',350000)")
cur.execute("INSERT INTO Cars VALUES(6,'Citroen',21000)")
cur.execute("INSERT INTO Cars VALUES(7,'Hummer',41400)")
cur.execute("INSERT INTO Cars VALUES(8,'Volkswagen',21600)")
except:
pass
from kivy.uix.boxlayout import BoxLayout
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.properties import ListProperty
Builder.load_string("""
<MyLayout>:
Button:
text: "Get data"
on_press: root.get_data()
RecycleView:
data: [{'text':"Id:{} Brand:{} Km:{}".format(id,name,km)} for id,name,km in root.rows]
viewclass: "Label"
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
""")
class MyLayout(BoxLayout):
rows = ListProperty([("Id","Brand","Price")])
def get_data(self):
cur.execute("SELECT * FROM Cars")
self.rows = cur.fetchall()
print(self.rows)
runTouchApp(MyLayout())
這似乎是一個很好的解決方案,但在1.9.1版本中不包含RecycleView的Widget,還是我錯過了在Windows安裝過程的一部分? –