8.7、删除 Spinbox 字符(这是个有问题的程序)
# delete:删除指定索引的字符.
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
def printSpin():
sb.delete(0)
print sb.get()
sb = Spinbox(root,
from_ = 1234, #最小值
to = 9999, #最大值
increment = 1,
command = printSpin#事件处理函数
)
sb.pack()
root.mainloop()
#在事件处理函数中使用 delete,Spinbox 初始值为 1234,点击 up 一次 Spinbox 的值变为 235,
再次点击变为 36,再次点击变为 7,但实际执行结果为第一次点击 235,再次点击为 234,以后
所有的点击操作均为此值。不知为何。
# 如果不使用事件处理函数,两次调用 delete 则可以正常,工作如下代码:
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
sb = Spinbox(root,
from_ = 1234, #最小值
to = 9999, #最大值
increment = 1
)
sb.delete(0)
sb.delete(0)
print sb.get()
sb.pack()
root.mainloop()
#此程序正常,可以打印出正确结果'34'
'''关于 delete 事件处理函数异常问题,又使用如下代码作了实验'''
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
def printSpin():
# 使用 delete()方法删除指定索引的字符
sb.delete(0)
print sb.get()
sb = Spinbox(root,
values = (1234,234,34,4),
command = printSpin
)
sb.pack()
root.mainloop()
#则这个程序点击 up 可以打印出 34,再次点击则为空。
'''
这个是可以工作的:①当前的值为 1234,②点击 up 按钮时,程序调用事件处理函数 printSpin
将 Spinbox 的当
前值变为 234;③Spinbox 查找值为 234 的项,得到索引为 1,即当前的索引值变为 1,up 还
会将索引增 1,即变为 2,所有显示的值
为 34,为了更好理解,用如下代码再次测试:
'''
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
def printSpin():
# 使用 delete()方法删除指定索引的字符
sb.delete(0)
print sb.get()
sb = Spinbox(root,
values = (1234567890,234567890,34567890,4567890,567890,
67890,7890,890,90,0),
command = printSpin #事件处理函数
)
sb.pack()
root.mainloop()
#这个程序显示的依次是 1234567890,34567890,567890,7890,90。
#还不了解内部工作原理,先这样理解吧,使用 delete 时注意可能会出现这样的问题。
代码
from tkinter import *
quehui = Tk()
def printP():
sb.delete(0)
sb = Spinbox(quehui,
from_ = 1234,
to = 9999,
increment = 1,
command = printP
).pack()
quehui.mainloop()


浙公网安备 33010602011771号