2013-03-26 189 views
0

我正在寻找一种在Tkinter中动态创建元素的方法。例如,假设用户输入5,我想要一个循环来创建5个单选按钮和旁边的条目。循环创建元素Tkinter

+0

这可以使用理解列表轻松完成。但是,也可以发布您尝试过的内容。 – 2013-03-26 16:21:25

+0

我还没有编码任何东西,因为我不知道从哪里开始。我认为我遇到的主要问题是动态创建变量名称。 – Arktri 2013-03-26 16:32:40

回答

1

这里有一个简单的例子,让你开始:

import Tkinter as tk 

class ButtonBlock(object): 
    def __init__(self, master): 
     self.master = master 
     self.button = [] 
     self.button_val = tk.IntVar() 
     entry = tk.Entry() 
     entry.grid(row=0, column=0) 
     entry.bind('<Return>', self.onEnter) 
    def onEnter(self, event): 
     entry = event.widget 
     num = int(entry.get()) 
     for button in self.button: 
      button.destroy() 
     for i in range(1, num+1): 
      self.button.append(tk.Radiobutton(
       self.master, text=str(i), variable=self.button_val, value=i, 
       command=self.onSelect)) 
      self.button[-1].grid(sticky='WENS', row=i, column=0, padx=1, pady=1) 
    def onSelect(self): 
     print(self.button_val.get()) 

if __name__ == '__main__': 
    root = tk.Tk() 
    ButtonBlock(root) 
    root.mainloop() 
+0

谢谢,这正是我所期待的。 – Arktri 2013-03-26 16:49:17

1

小部件没有什么特别之处。你在一个循环中创建它们,您将创建任何其他对象以相同的方式:

for i in range(5): 
    r = tk.Radiobutton(...) 
    r.pack(...) # or .grid(...) 

    # if you need to reference these buttons later, 
    # save them in a list 
    self.buttons.append(r)