马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
想不明白 def switch_show(self): 函数中 self.scale['showvalue'] = self.showVar.get() 怎么可以让tk.YES和tk.NO切换来切换去?
不像 def switch_orient(self): 函数中用一个条件来切换好理解.
有高手能指出其中的原因吗?
import tkinter as tk
from tkinter import ttk
class App:
def __init__(self, master):
self.master = master
self.initWidgets()
def initWidgets(self):
self.scale = tk.Scale(self.master,
from_=-100,
to = 100,
resolution=5,
label='Scale示例',
length=400,
width=30,
troughcolor='lightblue',
sliderlength=20,
sliderrelief=tk.SUNKEN,
showvalue=tk.YES,
orient=tk.HORIZONTAL
)
self.scale.pack()
# 创建一个 Frame 作为容器
f = tk.Frame(self.master)
f.pack(fill=tk.X, expand=tk.YES, padx=10)
tk.Label(f, text='是否显示值: ').pack(side=tk.LEFT)
i = 0
self.showVar = tk.IntVar()
self.showVar.set(1)
# 创建2个 Radiobutton 控制 scale 是否显示值
for s in ('不显示','显示'):
tk.Radiobutton(f,text=s,value=i,variable=self.showVar,
command=self.switch_show).pack(side=tk.LEFT)
i += 1
f2 = tk.Frame(self.master)
f2.pack(fill=tk.X,expand=tk.YES,padx=10)
tk.Label(f2,text='方向: ').pack(side=tk.LEFT)
j = 0
self.orientVar = tk.IntVar()
self.orientVar.set(0)
# 创建2个 Radiobutton 控制 Scale 的方向
for s in ('水平','垂直'):
tk.Radiobutton(f2,text=s,value=j,variable=self.orientVar,
command=self.switch_orient).pack(side=tk.LEFT)
j += 1
def switch_show(self):
self.scale['showvalue'] = self.showVar.get()
def switch_orient(self):
self.scale['orient'] = tk.VERTICAL if self.orientVar.get() else tk.HORIZONTAL
root = tk.Tk()
root.title('Scale 测试')
App(root)
root.mainloop()
self.showVar.get() 是与 Radiobutton 关联的变量,当你点击 Radiobutton 选项时,那个函数就会获取当前点击的选项对应的下标赋值给self.scale['showvalue'] 也就实现了 0 1 切换
NO=FALSE=OFF=0
YES=TRUE=ON=1
|