Python Tkinter,基于IntVar的标签/条目数

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应用程序,要求输入一个数字,然后使用该数字绘制正确数量的标签和入口

下面是我试图做的基本头脑风暴(我知道这是错误的)


实际上,所有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()