您可以在弹出式窗口中还是在屏幕上以基维(python)的形式打印表格

问题描述 投票:0回答:1

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


python kivy tabular
1个回答
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]])
© www.soinside.com 2019 - 2024. All rights reserved.