您可以在弹出窗口或屏幕上以kivy格式打印表格吗(python)

时间:2019-12-31 22:30:46

标签: python kivy tabular

我有一个程序可以从网页上抓取信息并将其存储在列表中,然后使用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()


1 个答案:

答案 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]])