Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter清晰地显示变量标签和值_Python_Tkinter - Fatal编程技术网

Python Tkinter清晰地显示变量标签和值

Python Tkinter清晰地显示变量标签和值,python,tkinter,Python,Tkinter,我是Tkinter的新手,已经编写了一个打开文件和解析二进制消息的程序 我正在努力研究如何最好地展示结果。我的解析类将有300多个条目,我想要类似于表的东西 var1Label : var1Val var2Label : var2Val 我曾经玩过这些小部件,但没有得到任何值得我骄傲的东西:标签、文本、消息,可能还有其他东西 所以我希望标签是右对齐,变量是左对齐,或者任何其他的东西,这将是一个好主意,如何使它成为一个有吸引力的显示,像所有的“:”对齐。变量的大小将在0-15个字符之间 我正在

我是Tkinter的新手,已经编写了一个打开文件和解析二进制消息的程序

我正在努力研究如何最好地展示结果。我的解析类将有300多个条目,我想要类似于表的东西

var1Label : var1Val

var2Label : var2Val
我曾经玩过这些小部件,但没有得到任何值得我骄傲的东西:标签、文本、消息,可能还有其他东西

所以我希望标签是右对齐,变量是左对齐,或者任何其他的东西,这将是一个好主意,如何使它成为一个有吸引力的显示,像所有的“:”对齐。变量的大小将在0-15个字符之间

我正在windows上使用python 2.7.2

这是我用虚拟变量尝试的网格方法

self.lbVar1 = Label(self.pnDetails1, text="Var Desc:", justify=RIGHT, bd=1)
self.lbVar1.grid(sticky=N+W)
self.sVar1 = StringVar( value = self.binaryParseClass.Var1 )
self.Var1  = Label(self.pnDetails1, textvariable=self.sVar1)
self.Var1.grid(row=0, column=1, sticky=N+E)
小部件允许您创建具有多列的对象列表。它可能是你最容易使用的东西

由于您特别询问了标签网格,下面是一个快速而肮脏的示例,演示了如何在可滚动网格中创建300个项目:

import Tkinter as tk
class ExampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        # create a canvas to act as a scrollable container for
        # the widgets
        self.container = tk.Canvas(self)
        self.vsb = tk.Scrollbar(self, orient="vertical", command=self.container.yview)
        self.container.configure(yscrollcommand=self.vsb.set)
        self.vsb.pack(side="right", fill="y")
        self.container.pack(side="left", fill="both", expand=True)

        # the frame will contain the grid of labels and values
        self.frame = tk.Frame(self)
        self.container.create_window(0,0, anchor="nw", window=self.frame)

        self.vars = []
        for i in range(1,301):
            self.vars.append(tk.StringVar(value="This is the value for item %s" % i))
            label = tk.Label(self.frame, text="Item %s:" % i, width=12, anchor="e")
            value = tk.Label(self.frame, textvariable=self.vars[-1], anchor="w")
            label.grid(row=i, column=0, sticky="e")
            value.grid(row=i, column=1, sticky="ew")

        # have the second column expand to take any extra width
        self.frame.grid_columnconfigure(1, weight=1)

        # Let the display draw itself, the configure the scroll region
        # so that the scrollbars are the proper height
        self.update_idletasks()
        self.container.configure(scrollregion=self.container.bbox("all"))

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

您是否已签出
.grid()
系统?我假设您使用的是
.pack()
方法。是的,我使用的是.grid()系统。我正在寻找一个小部件,它允许我在列级别设置一些属性。我在响应时遇到了问题,所以我用一个示例编辑了我的原始文章,其中介绍了我如何尝试使用.grid()系统。这显示正确,但让下面的所有内容对齐对我来说似乎不起作用,而且这样做300多次似乎很麻烦,尽管如果我能找出如何使所有内容对齐,我会这样做。不要“这样做300多次”,只需将其放入一个循环中即可。您也可以查看或。@Junuxx谢谢,我不知道ttk扩展,我将尝试使用Treeview选项。我没有尝试在.grid()方法上循环,因为我在正确对齐方面遇到了问题。谢谢。这正是我想要的。我没有足够的分数来给你+1,但是我可以把它扩展到多个列,然后用它运行。