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