本文主要是介绍控件之notebook radiobutton checkbutton variable compound,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#组件数值改变需要用variable绑定,组件文本改变用textvariable绑定;值显示用value,文本显示用text1.tkinter 支持将很多 GUI 组件与变量进行双向绑定,执行这种双向绑定后编程非常方便:如果程序改变变量的值,GUI 组件的显示内容或值会随之改变;当 GUI 组件的内容发生改变时(比如用户输入),变量的值也会随之改变;2.但这种双向绑定有一个限制,就是 Tkinter不允许将组件和普通变量进行绑定,
只能和 tkinter 包下 Variable 类的子类进行绑定。该类包含如下几个子类:StringVar():用于包装str 值的变量。IntVar():用于包装整型值的变量。DoubleVar():用于包装浮点值的变量。BooleanVar():用于包装bool值的变量。3.对于 Variable 变量而言,如果要设置其保存的变量值,则使用它的 set() 方法;
如果要得到其保存的变量值,则使用它的 get() 方法。4.variable主要参数有:variable, textvariable, onvalue, offvalue, value程序可以为按钮或 Label 等组件同时指定 text 和 image 两个选项,其中 text 用于指定该组件上的文本;
image 用于显示该组件上的图片,当同时指定这两个选项时,通常 image 会覆盖 text。
但在某些时候,程序希望该组件能同时显示文木和图片,此时就需要通过 compound 选项进行控制。compound 选项支持如下属性值:
None:图片覆盖文字。
LEFT 常量(值为‘left’字符串):图片在左,文本在右。
RIGHT 常量(值为‘right’字符串):图片在右,文本在左。
TOP 常量(值为‘top’字符串): 图片在上,文本在下。
BOTTOM 常量(值为‘bottom’字符串):图片在底,文本在上。
CENTER 常量(值为‘center’字符串):文本在图片上方。
from tkinter import *
from tkinter import messagebox
from tkinter import ttkroot = Tk()
root.title('Radiobutton Checkbutton Variable')
root.resizable(0,0)#创建Notebook
tabControl = ttk.Notebook(root) #窗口下创建Notebook
tabControl.pack(expand=1, fill="both") # 添加notebook,窗口显示tab1 = Frame(tabControl) # notebook下创建frame
tabControl.add(tab1, text='Variable') # 添加frame到notebook显示tab2 = Frame(tabControl) # Add a second tab
tabControl.add(tab2, text='compound') # Make second tab visibletab3 = Frame(tabControl)
tabControl.add(tab3, text='第三页')#-------------- 创建variable控件-----------------
#Button textvariable:
leftf1 =Frame(tab1)
leftf1.pack(side=LEFT,pady=20,padx=5)def change1():import randomstrVar1.set(books1[random.randint(0, 2)])#调用setdef get1():messagebox.showinfo(title='文本变量',message=strVar1.get())#调用getstrVar1 = StringVar()#创建变量
books1 = ('Python', 'C', 'C++')
# 绑定变量
Entry(leftf1, textvariable=strVar1,width=10,font=('楷体', 20, 'bold'),fg='red').pack(pady=10 )
Button(leftf1, text='改变', command=change1).pack(side=LEFT,fill=X,expand=1,pady=10)
Button(leftf1, text='获取', command=get1).pack(side=LEFT,fill=X,expand=1,pady=10)#Radiobutton IntVar:
leftf2 =Frame(tab1)
leftf2.pack(side=LEFT)def change2():messagebox.showinfo(title='整形变量', message=intVar1.get())#调用getintVar1 = IntVar()#创建变量
books2 = ('C','C++', 'Python', 'Java')
i = 1
for book2 in books2:#绑定变量,相当于创建四个radiobutton,并绑定变量和value=(0-3)值Radiobutton(leftf2,text=book2,variable=intVar1, value=i,command=change2).pack(anchor=W)i += 1
intVar1.set(2)#调用set'''i从0开始
intVar1 = IntVar()
for i,book2 in enumerate(('C','C++', 'Python', 'Java')):Radiobutton(leftf2,text=book2,variable=intVar1, value=i,command=change2).pack(anchor=W)
intVar1.set(2)#调用set
'''#checkbutton BooleanVar:
leftf3 =Frame(tab1)
leftf3.pack(side=LEFT)def change3():# e.get()用来获取checkbutton选中与否状态的返回值:onvalue或offvalue的值,默认是1,0,要变为str:Truenewbooknums3 = [str(booknum3.get()) for booknum3 in booknums3]##步骤3调用get()# join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串Nbn = ', '.join(newbooknums3)messagebox.showinfo(title='布尔变量', message=Nbn)books3 = ('C','C++', 'Python', 'Java')
booknums3 = []
for book3 in books3:booleanVar2 = BooleanVar() #步骤1创建Checkbutton(leftf3, text=book3, variable=booleanVar2, command=change3).pack(anchor=W)#步骤2绑定booknums3.append(booleanVar2)# 输出PY_VAR2-PY_VAR5是个地址引用,var 是对 tkinter.IntVar 对象的引用,您需要调用其 get 方法访问它代表的值:print (booleanVar2)
print(booknums3)#打印列表元素的地址#checkbutton StringVar:
leftf4 =Frame(tab1)
leftf4.pack(side=LEFT)def change4():# e.get()用来获取checkbutton选中与否状态的返回值:onvalue或offvalue的值newlist = [e.get() for e in books]# 将new_li列表连接成字符串st = ', '.join(newlist)messagebox.showinfo(title='字符串变量', message=st)books = []
books4 = ('C','C++', 'Python', 'Java')
vals = ('C','C++', 'Python', 'Java')
i = 0for book4 in books4:strVar4 = StringVar()#ttk.checkbutton与checkbutton样式不一样cb = ttk.Checkbutton(leftf4,text=book4,variable=strVar4,onvalue=vals[i],#onvalue默认等于1,offvalue默认等于0offvalue='无',command=change4)cb.pack(anchor=W)books.append(strVar4)strVar4.set(vals[i])#设置初始状态,也可strVar4.set('无')i += 1# -------------- 创建compound控件-----------------bm = PhotoImage(file = 'C:/Users/caojiangtao/Desktop/3.compound.png')
label = Label(tab2, text='学编程\n神器',image=bm,font=('楷体', 20, 'bold'), foreground='red' )
label.pack()f = ttk.Frame(tab2)
f.pack(fill=BOTH, expand=YES)def compoundchange():b = label['compound'] = strVar5.get().lower()# lower() 方法转换字符串中所有大写字符为小写。print(b)strVar5 = StringVar()
compounds = ('None', "LEFT", "RIGHT", "TOP", "BOTTOM", "CENTER")
for value in compounds:rb = Radiobutton(f,text=value,variable=strVar5,value=value,command=compoundchange,padx=10)rb.pack(side=LEFT, anchor=CENTER)strVar5.set('None')root.mainloop()
这篇关于控件之notebook radiobutton checkbutton variable compound的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!