|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|
|