tkinter内的无法删除
from tkinter import *list1 = ['+','-','*','/']
root = Tk()
frame = Frame(root,padx = 10, pady = 10)
frame.pack(padx = 10,pady = 10)
v1 = IntVar()
v2 = IntVar()
v3 = IntVar()
v_fuhao = StringVar()
def check_is_num(content):
if content.isdigit():
return True
else:
return False
#开始搞加减乘除和计算的函数:
def add():
v_fuhao.set(list1)
def jian():
v_fuhao.set(list1)
def cheng():
v_fuhao.set(list1)
def chu():
v_fuhao.set(list1)
def calc():
ifv_fuhao.get() == "+":
v3.set(int(v1.get()) + int(v2.get()))
elifv_fuhao.get() == "-":
v3.set(int(v1.get()) - int(v2.get()))
elifv_fuhao.get() == "*":
v3.set(int(v1.get()) * int(v2.get()))
elifv_fuhao.get() == "/":
v3.set(int(v1.get()) / int(v2.get()))
# 开始封装函数:
check_is_num = root.register(check_is_num)
#开始设置entry 与 label
entry1 = Entry(frame,textvariable = v1,validate = 'key',validatecommand = (check_is_num,"%P"),\
width = 10)
entry1.grid()
label1 = Label(frame,textvariable = v_fuhao,width = 5)
label1.grid(row = 0, column = 1)
entry2 = Entry(frame,textvariable = v2,validate = 'key',validatecommand = (check_is_num,"%P"),\
width = 10)
entry2.grid(row = 0, column = 2,padx = 50)
label2 = Label(frame,text = "=")
label2.grid(row = 0, column = 3)
entry3 = Entry(frame,textvariable = v3,validate = 'key',validatecommand = (check_is_num,"%P"),\
width = 10,state = 'readonly')
entry3.grid(row = 0,column = 4)
#开始设置button:
button1 =Button(frame,text = list1,command = add,width = 10)
button2 =Button(frame,text = list1,command = jian,width = 10)
button3 =Button(frame,text = list1,command = cheng,width = 10)
button4 =Button(frame,text = list1,command = chu,width= 10)
button_calc = Button(frame,text = "计算结果",command = calc, width = 10)
button1.grid(row = 1, column = 0)
button2.grid(row = 1, column = 1)
button3.grid(row = 2, column = 0)
button4.grid(row = 2, column = 1)
button_calc.grid(row = 2, column = 4,sticky = 'w',pady = 10)
mainloop()
为什么显示框内出现的零无法被删除(用Backsapce没用/(ㄒoㄒ)/~~) tkinter中的无法删除零的问题
问题出现在以下代码行:
entry3 = Entry(frame, textvariable=v3, validate='key', validatecommand=(check_is_num, "%P"), width=10, state='readonly')
entry3 是一个 Entry 组件,通过设置 textvariable=v3,它与 v3 变量绑定。然而,你将 entry3 的状态设置为 'readonly',这意味着用户无法编辑或删除其中的文本。
要解决这个问题,可以将 entry3 组件的状态更改为可编辑状态。只需将 state 属性设置为 'normal' 即可。修改后的代码如下:
entry3 = Entry(frame, textvariable=v3, validate='key', validatecommand=(check_is_num, "%P"), width=10, state='normal')
这样,用户将能够在 entry3 中编辑并删除零。
希望我的回答能够帮到你!如果还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
问题出在使用了 state='readonly' 属性来设置 entry3 为只读状态。当 entry3 处于只读状态时,用户无法通过键盘输入来修改其中的内容,包括删除已有的内容。
要解决这个问题,你可以将 entry3 的 state 属性设置为默认值 state='normal' ,这样用户就可以通过Backspace键删除 entry3 中的内容了。
修改代码如下:
entry3 = Entry(frame, textvariable=v3, validate='key', validatecommand=(check_is_num, "%P"), width=10, state='normal')
请注意,修改后的代码只会解决删除问题,但是用户仍然无法手动修改 entry3 中的内容,因为它仍然是只读的。如果你希望用户能够手动修改结果,你可以将 entry3 的 state 属性设置为 'normal' 。
希望能帮到你! Mike_python小 发表于 2023-8-28 20:14
tkinter中的无法删除零的问题
问题出现在以下代码行:
entry2与entry1都没设置state= 'readonly',但为什么也不可删除 davidmou 发表于 2023-8-28 20:19
entry2与entry1都没设置state= 'readonly',但为什么也不可删除
因为楼上2位都是机器人。{:5_109:} 验证问题,自己慢慢研究。
def check_is_num(content):
if content=='' or content.isdigit():
return True
else:
return False
当你删到最前一位时,就为空了,为空不会通过验证。 ba21 发表于 2023-8-28 21:11
验证问题,自己慢慢研究。
def check_is_num(content):
if content=='' or content.isdigit():
还是真人好{:9_228:} davidmou 发表于 2023-8-28 21:20
还是真人好
你都没问我{:10_277:}
页:
[1]