这段代码为什么输入框不显示任何输入,只有去掉 validate = 'key'
才可以,但是这样又失去了验证功能:
from tkinter import *
master = Tk()
v1 = StringVar()
v2 = StringVar()
v3 = StringVar()
def test(content) :
return content.isdigit()
testCMD = master.register(test)
e1 = Entry(master,textvariable = v1, validate = 'key',\
validatecommand = (testCMD,'%p')).grid(row = 0,column =0)
Label(master,text = '+').grid(row = 0,column =1)
e2 = Entry(master, textvariable=v2, validate = 'key',\
validatecommand=(testCMD, '%p')).grid(row = 0,column =2)
Label(master,text = '=').grid(row = 0,column =3)
e3 = Entry(master,textvariable = v3,state = 'readonly').grid(row = 0,column =4)
def calc() :
result = int(v1.get()) + int(v2.get())
v3.set(str(result))
Button(master,text = '计算结果',command = calc).grid(row = 1,column =2)
mainloop()
關鍵問題在於 valid percent substitutions 有誤,
validatecommand
中的 P 應該要大寫:%P
而不是%p
.另外補充一點,左右小括號
(
,)
本身就允許代碼換行,不需要另外加上\
了.以上給你參考.