Python Tkinter,基于IntVar的标签/条目数
我希望有人能帮我做点什么。我想制作一个Tkinter应用程序,要求输入一个数字,然后使用该数字绘制正确数量的标签和入口 下面是我试图做的基本头脑风暴(我知道这是错误的)Python Tkinter,基于IntVar的标签/条目数,python,tkinter,label,tkinter-entry,Python,Tkinter,Label,Tkinter Entry,我希望有人能帮我做点什么。我想制作一个Tkinter应用程序,要求输入一个数字,然后使用该数字绘制正确数量的标签和入口 下面是我试图做的基本头脑风暴(我知道这是错误的) 实际上,所有Tkinter应用程序都应该放在一个类中。此外,从任何包中使用import*通常也是一个不好的主意,因为您可能会遇到导入的未知值的覆盖问题。因此,下面的例子是在一个类中,应该让您了解它的外观。我相信这就是你想要的: import Tkinter as Tk class App(Tk.Frame): def
实际上,所有Tkinter应用程序都应该放在一个类中。此外,从任何包中使用
import*
通常也是一个不好的主意,因为您可能会遇到导入的未知值的覆盖问题。因此,下面的例子是在一个类中,应该让您了解它的外观。我相信这就是你想要的:
import Tkinter as Tk
class App(Tk.Frame):
def __init__(self, master, *args, **kwargs):
Tk.Frame.__init__(self, *args, **kwargs)
self.existing_lines = 2
self.entry_lines = Tk.IntVar()
Tk.Label(self, text="Number Of Lines").grid(row=0, column=0)
Tk.Entry(self, textvariable=self.entry_lines).grid(row=0, column=1)
Tk.Button(self, text="Apply Number", command=self.add_rows).grid(row=1, column=1)
def add_rows(self):
for row in xrange(self.existing_lines, self.existing_lines+self.entry_lines.get()):
Tk.Label(self, text="Line %i" % (row-1)).grid(row=row, column=0)
Tk.Entry(self, textvariable=self.entry_lines).grid(row=row, column=1)
self.existing_lines+= 1
if __name__ == "__main__":
root = Tk.Tk()
App(root).pack()
root.mainloop()
这太棒了,非常感谢,这正是我需要的。关于导入*,我通常使用Tkinter作为Tk,只是为了小应用程序,我不介意,但我将从现在开始这样做。再次小心非常感谢您的时间和帮助,非常感谢。您为每个
条目
分配了相同的(IntVar)textvariable,因此您在其中一个条目中键入的内容最终会在所有条目中结束。考虑在新的条目中使用<代码> Strimava s。我想他是这样想的,这样你就可以在任何一行上输入你想要的行数,然后按回车键。@Thimble Ok,这很有意义。我在他的代码中将其解释为一个错误,因为我没有真正看到许多包含相同文本的条目的实际用途。
import Tkinter as Tk
class App(Tk.Frame):
def __init__(self, master, *args, **kwargs):
Tk.Frame.__init__(self, *args, **kwargs)
self.existing_lines = 2
self.entry_lines = Tk.IntVar()
Tk.Label(self, text="Number Of Lines").grid(row=0, column=0)
Tk.Entry(self, textvariable=self.entry_lines).grid(row=0, column=1)
Tk.Button(self, text="Apply Number", command=self.add_rows).grid(row=1, column=1)
def add_rows(self):
for row in xrange(self.existing_lines, self.existing_lines+self.entry_lines.get()):
Tk.Label(self, text="Line %i" % (row-1)).grid(row=row, column=0)
Tk.Entry(self, textvariable=self.entry_lines).grid(row=row, column=1)
self.existing_lines+= 1
if __name__ == "__main__":
root = Tk.Tk()
App(root).pack()
root.mainloop()