from tkinter import *
root = Tk()
def But_Cmd(butcode):
global Button_select, frame1, b1, b2
def But_dic_lookup():
try:
Button_select[butcode]()
except:
print('*** button select not found, butno= ', butcode)
return(But_dic_lookup)
return
#===========================================================================
def Proc_button_100():
print('Proc_button_ 100')
return
def Proc_button_101():
print('Proc_button_ 101')
return
def Proc_button_102():
print('Proc_button_ 102')
return
def Proc_button_103():
print('Proc_button_ 103')
return
#--------------------------------------------------------------------------
def Button_Dict():
global Button_select
Button_select = {
100: Proc_button_100,
101: Proc_button_101,
102: Proc_button_102,
103: Proc_button_103,
}
return
#--------------------------------------------------------------------
def List_Dic():
for keys,values in Button_select.items():
print(keys)
print(values)
return
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#global Button_select, frame1, b1, b2
Button_Dict()
List_Dic()
root.geometry("400x200+00+00")
frame1 = Frame(root)
frame1.config(background= 'silver')
frame1.place(x = '00', y = '00', width = '400', height = '200' )
frame1.pack_propagate(0)
b1 = Button(frame1, text='pusch1', command = But_Cmd('100'))
b1.config(background= 'orange')
b1.pack(side=TOP, pady=10)
b2 = Button(frame1, text='pusch2', command = But_Cmd('106'))
b2.config(background= 'light blue')
b2.pack(side=TOP, pady=10)
mainloop()
上面的python使用button命令传递代码。代码使用字典开关转到函数调用。我使用了一个'条目'小部件以同样的方式没有问题。表格和按钮显示没有问题;按钮命令不起作用。我也得到太多的联系'在GUI的底部。我正在使用Wing IDE。
答案 0 :(得分:2)
您在这里使用字符串:
command = But_Cmd('106')
但是您的实际字典是使用整数定义的:
Button_select = {
100: Proc_button_100, # etc.
很明显,这些功能永远不会被找到,因为您使用的密钥不在字典中。(在类似的情况下,你有一个按钮代码106但没有这样的功能。)
我的建议是不要使用字典。完全没有。使用函数获得所需函数绝对没有任何好处,而不是仅仅使用所需的函数。
另外,为对象提供有意义的名称,而不是模糊的数字代码。