我创建了 5 个按钮。当用户单击按钮时,将打开新窗口。我希望打开的窗口有不同的标题。例如用户点击button1
,打开的窗口名称为"Button_1"
。这是我代码的一部分。
button1= tk.Button(window,image=photo1,command=Calculations)
button2= tk.Button(window,image=photo2,command=Calculations)
button3= tk.Button(window,image=photo3,command=Calculations)
button4= tk.Button(window,image=photo4,command=Calculations)
button5= tk.Button(window,image=photo5,command=Calculations)
def Calculations():
window_2 = tk.Toplevel()
window_2.geometry("1000x1000")
window_2.title("Button_1")
我想如果我知道按下了哪个按钮,我想我可以分配一个变量并使用 window_2.title()
方法编写 format()
。有没有办法找到按下的按钮并将其分配给变量或其他想法?
答案 0 :(得分:4)
您使用 functools.partial(<command>, *arguments)
传递按钮及其名称/索引。
from functools import partial
def Calculations(button, name):
window_2 = tk.Toplevel()
window_2.geometry("1000x1000")
window_2.title(name)
# Create the button without a command or an empty command
button1= tk.Button(window, image=photo1)
# Configure the command later so that we can also pass in `button1` to the function
button1.config(command=partial(Calculations, button1, "button1"))
button2 = tk.Button(window, image=photo2)
button2.config(command=partial(Calculations, button2, "button2"))
...
答案 1 :(得分:2)
您可以对按钮的 command
参数使用 lambda 函数。
button1= tk.Button(window,image=photo1,command=lambda: Calculations("1"))
button2= tk.Button(window,image=photo2,command=lambda: Calculations("2"))
button3= tk.Button(window,image=photo3,command=lambda: Calculations("3"))
button4= tk.Button(window,image=photo4,command=lambda: Calculations("4"))
button5= tk.Button(window,image=photo5,command=lambda: Calculations("5"))
def Calculations(num):
window = tk.Toplevel()
window.geometry("1000x1000")
window.title("Button_" + num)
更有效的解决方案是使用 for 循环:
for i in range(5):
i += 1
globals()["button" + str(i)] = tk.Button(window, image=globals()["photo" + str(i)], command=lambda i=i: Calculations(str(i)))
def Calculations(num):
window = tk.Toplevel()
window.geometry("1000x1000")
window.title("Button_" + num)
答案 2 :(得分:1)
button1= tk.Button(window,image=photo1,command=lambda: Calculations("button one"))
button2= tk.Button(window,image=photo2,command=lambda: Calculations("button two"))
button3= tk.Button(window,image=photo3,command=lambda: Calculations("button three"))
button4= tk.Button(window,image=photo4,command=lambda: Calculations("button four"))
button5= tk.Button(window,image=photo5,command=lambda: Calculations("button 5"))
所以当按下按钮时,它会给出一个 str 变量,表示按下了哪个按钮。示例:“按钮一”
def Calculations(button):
window = tk.Toplevel()
window.geometry("1000x1000")
window.title(str(button))
然后窗口的标题将是按下了哪个按钮。
您还可以制作一组单选按钮/复选按钮并将它们分配给 tk.IntVar() 并为每个按钮设置一个唯一值并制作一个“完成”按钮。 (它做同样的事情,期望它是复选按钮)
var = tk.IntVar()
C1 = tk.Checkbutton(frame, onvalue=1, variable=self.var)
C2 = tk.Checkbutton(frame, onvalue=2, variable=self.var)
C3 = tk.Checkbutton(frame, onvalue=3, variable=self.var)
C4 = tk.Checkbutton(frame, onvalue=4, variable=self.var)
done = tk.button(frame, command=calculations)
def Calculations(num):
window = tk.Toplevel()
window.geometry("1000x1000")
window.title("Button_" + var)