当前位置: 首页 > 面试题库 >

创建一个看起来像Tkinter的表

栾英资
2023-03-14
问题内容

我希望在Tkinter中创建类似于表的内容,但不一定必须是一个表。

我想例如创建标题“ Name1”,“ Name2”,“ Value”,并且在每个标题下方我希望有几行空白。

然后,我希望稍后使用我计算出的值或名称的html" target="_blank">字符串值填写这些行(因此称为Label)。

对于“ Name2”,我实际上希望整个列都为一个下拉菜单。我已经自己创建了一个代码,但不确定如何将其合并到此“表”中。

例如,是否可以在Label小部件周围创建边框,使其看起来像“表格”?

任何指向在这种情况下可能发生的情况的指针将不胜感激。如果您需要我的任何代码来解决问题,请询问。谢谢!


问题答案:

你有什么问题?简单的解决方案是使用布置小部件grid。您可以在每个单元格中放入所需的任何类型的小部件。是的,标签可以有边框。不过,做网格线的一种简单方法是在每个单元格周围使用填充,以使框架的颜色通过间隙显示出来。

在框架中执行此操作。如果需要滚动表,请将框架放在画布中并添加滚动条。网上有一些示例,介绍如何使用画布创建可滚动框架。

这是一个非常简单的示例,它仅使用标签,并且不会滚动。我将把您需要的确切实现留给读者练习。

import Tkinter as tk

class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        t = SimpleTable(self, 10,2)
        t.pack(side="top", fill="x")
        t.set(0,0,"Hello, world")

class SimpleTable(tk.Frame):
    def __init__(self, parent, rows=10, columns=2):
        # use black background so it "peeks through" to 
        # form grid lines
        tk.Frame.__init__(self, parent, background="black")
        self._widgets = []
        for row in range(rows):
            current_row = []
            for column in range(columns):
                label = tk.Label(self, text="%s/%s" % (row, column), 
                                 borderwidth=0, width=10)
                label.grid(row=row, column=column, sticky="nsew", padx=1, pady=1)
                current_row.append(label)
            self._widgets.append(current_row)

        for column in range(columns):
            self.grid_columnconfigure(column, weight=1)


    def set(self, row, column, value):
        widget = self._widgets[row][column]
        widget.configure(text=value)

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()


 类似资料:
  • 问题内容: 我需要使按钮看起来像使用CSS的链接。所做的更改已经完成,但是当我单击它时,它显示的效果就像按按钮一样。任何想法如何删除它,以便即使单击该按钮也可以用作链接? 问题答案:

  • 问题内容: 我有以下代码: 这里的主要循环是: 但是我不确定这是做到这一点的最佳方法(如果我想输入一些信息,这将不起作用) 然后我尝试了这个: 但是,正如我已经意识到的那样,它并没有达到我的预期。所以问题是:创建主循环的最佳方法是什么? 问题答案: Tkinter为此提供了一个强大的工具,它被称为after。它旨在用作同步睡眠命令,但可以通过调用自身在mainloop内建立一个循环。 之后,是一个

  • 我在Ubuntu 14.04.1 LTS上安装了jenkins。我正在尝试配置jdk,当我在JAVA_HOME字段中键入/usr/lib/jvm/java-7-openjdk-amd64时,Jenkins抱怨它看起来不像一个jdk目录。 有人知道这是什么原因吗?

  • 问题内容: 因此,我必须使用Tkinter来创建棋盘游戏。这只是程序的一部分,我想在其中引入董事会形象。但是我不断收到错误消息:“创建图像为时过早”,我不确定自己做错了什么。 到目前为止,这是我的代码: 任何帮助,将不胜感激。谢谢 :) 问题答案: 您忘记声明root- 。使用前,Tk系统必须打开。

  • 问题内容: 我有一个JButton,出于各种原因,我想充当按钮,但看起来却像JLabel。实际上,它不一定必须是JLabel,我只是不希望显示凸起的按钮边缘。 是否有一种简单的方法可以关闭JButton的“按钮外观”,但保留所有按钮功能? 我可以构建某种组合的子类超级按钮,将其委托给jlabel进行显示,但我真的希望有类似的东西。 问题答案: 您将需要执行以下操作: 如果希望它实际绘制焦点,则可能

  • 问题内容: 我想为捐赠表格设置一组单选按钮,但是我希望它们看起来像按钮而不是圆形表盘。 做这样的最好的方法是什么?另外,请记住,它必须与IE8一起使用。 这是我到目前为止的内容 谢谢 问题答案: 可以使用CSS来完成,而无需大型框架。我已经使用复选框和单选按钮完成了此操作。 此方法无需添加新的HTML或引入任何JS库即可。 => HTML的新命令 这是一个十分钟的hacky版本,您可以进一步清理它