我有一个程序可以从网页上抓取信息并将其存储在列表中,然后使用tabulate.tabulate
打印该信息。我现在正尝试使用kivy将程序转换为更可用的GUI。但是,我所看到的教程仅显示了如何使用Label
在屏幕或弹出窗口上书写,这似乎只显示文本,而不显示表格。因此,我认为我不能在那里打印表格(至少不使用表格)。
所以我的问题是,我想做的是可能的吗?如果可以,怎么办?
编辑:我尝试过的
.kv文件
WindowManager:
Screen1:
<Screen1>
name: 'screen1'
Label:
text: tabulate([[1, 2, 3], [2, 4, 6]])
.py文件
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from tabulate import tabulate
kv = Builder.load_file('my.kv')
class Screen1(Screen):
pass
class WindowManager(ScreenManager):
pass
class MyMainApp(App):
def build(self):
return kv
if __name__ == '__main__':
MyMainApp().run()
答案 0 :(得分:2)
您可以使用Label
文件中设置的ids
访问kv
。另外,如果您访问tabulate
文件之外的kv
,则不再需要import
文件中的kv
。这是一个经过修改的kv
文件,它为id
添加了Label
(并且还添加了Button
来触发表的建立):
WindowManager:
Screen1:
<Screen1>
name: 'screen1'
Label:
id: table # this is the id
font_name: 'DejaVuSansMono'
pos_hint: {'center_x':0.5, 'top':0.9}
size_hint: None, None
size: self.texture_size
Button:
text: 'Make Table'
pos_hint: {'center_x':0.5, 'y':0.1}
size_hint: None, None
size: self.texture_size
on_release: root.make_table()
上面的代码还为Label
指定了等宽字体。我不能保证您的系统将使用该特定字体。然后在您的Screen1
类中,定义make_table()
方法:
class Screen1(Screen):
def make_table(self):
self.ids.table.text = tabulate([[1, 2, 3], [2, 4, 6]])