我正在用Python TKinter编写一个GUI,我有一个大约24个按钮的网格,我使用循环创建(不是单独的)。有什么方法可以让我按下按钮的文本。
由于它处于循环中,即使使用lambda,回调函数也无法帮助我。我不想写单独的代码,按下每个不同的按钮会发生什么。我只需要知道相应按钮的文本,这样我就可以启动另一个只使用该文本的泛型函数。
ps:我可以使用List和curselection()执行相同的任务,并且不希望这样。
self.num = 11
for r in range(0,5):
for c in range(0,3):
R = r; C = c
resNum = "Ch0"+str(self.num);
self.button1_rex = tk.Button(self.frame, text = resNum,font=("Helvetica", 14), justify = CENTER,width = 20, command = self.new_window)
self.button1_rex.grid(row=R, column=C, sticky=W)
self.num = self.num+1
self.new_window是打开一个新窗口并需要根据按钮编号执行其他功能的功能(如“Ch011”等)
答案 0 :(得分:2)
最简单的方法是,在构建按钮时,使用functools.partial
或lambda
将名称绑定到命令。
self.button1_rex = tk.Button(..., command=functools.partial(self.new_window, resNum))
使用lambda:
self.button1_rex = tk.Button(..., command=lambda r=resNum: self.new_window(r))
有关lambda的更多信息,请参阅What is a lambda (function)?和Python tkinter creating buttons ... arguments。