0
我相信這段代碼是關閉的 - 我有三個按鈕用回調定義,用於存儲與所選按鈕關聯的IntVar()變量。我創建了一個臨時變量(cntr),用於存儲相應的Intvar。這似乎是基於我在回調中的打印聲明工作。但是當我選擇其中一個按鈕時,點擊在代碼末尾配置的inc或dec按鈕,唯一改變的「entry」按鈕就是在代碼的主要部分中設置的那個按鈕。誰能告訴我什麼我缺少使用相同的2個控制按鈕控制多個輸入按鈕
#!/usr/bin/python3
from tkinter import *
from tkinter import PhotoImage
def increment (cntr):
print('in inc', cntr)
cntr.set("{0:0>4}".format(cntr.get() + 1))
def decrement (cntr):
print('in dec', cntr)
cntr.set("{0:0>4}".format(cntr.get() - 1))
def EntryCB(arg):
global cntr
cntr = arg
print('in EntryCB', cntr, arg)
root = Tk()
root.configure(bg='white')
frame1 = LabelFrame(root, text="Component 1",)
frame1.grid()
#UpArrow = PhotoImage(file="images//UpArrow.png")
#DownArrow = PhotoImage(file="images/DownArrow.png")
counter1 = IntVar()
counter1.set("{0:0>4}".format(0))
counter2 = IntVar()
counter2.set("{0:0>4}".format(0))
counter3 = IntVar()
counter3.set("{0:0>4}".format(0))
cntr=counter1
print('in main', cntr)
#setup entry buttons tied to IntVar variables
Entry1 = Button(frame1, textvariable=counter1)
Entry1.grid(row=0, column=0)
Entry1.config(command= lambda arg=counter1:EntryCB(arg))
Entry1.configure(borderwidth=3, relief='sunken', bg='green')
Entry2 = Button(frame1, textvariable=counter2)
Entry2.grid(row=0, column=1)
Entry2.config(command= lambda arg=counter2:EntryCB(arg))
Entry2.configure(borderwidth=3, relief='sunken', bg='pink')
Entry3 = Button(frame1, textvariable=counter3)
Entry3.grid(row=0, column=2)
Entry3.config(command= lambda arg=counter3:EntryCB(arg))
Entry3.configure(borderwidth=3, relief='sunken', bg='orange')
#setup callback and display control buttons to increment or decrement the IntVar
Inc = Button(frame1,text='Inc')
Inc.grid(row=1, column=0)
Inc.configure(command= lambda arg=cntr:increment(arg))
Dec = Button(frame1,text='Dec')
Dec.grid(row=1, column=1)
Dec.configure(command= lambda arg=cntr:decrement(arg))
root.mainloop()