控件之notebook radiobutton checkbutton variable compound

2024-06-19 03:32

本文主要是介绍控件之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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073887

相关文章

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【Jupyter Notebook】汉化

1.打开:Anaconda Prompt 2.输入:"activate Zhui01"(注意:Zhui01是刚创建的环境名字) activate Zhui01 3.输入:"pip install jupyterlab-language-pack-zh-CN" pip install jupyterlab-language-pack-zh-CN 4.打开:Jupyter Noteb

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

[轻笔记] jupyter notebook 指定conda虚拟环境

安装插件 conda install nb_conda 进入conda env conda activate ${env_name}conda install ipykernelconda deactivate #3. 运行jupyter notebook conda activate # 需要先进入conda环境,非常重要jupyter notebook 会发现,在ju

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Qt-常用控件(3)-多元素控件、容器类控件和布局管理器

1. 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例. QTableView 是基于 MVC 设计的控件.QTableView 自身不持有数据,使用 QTab

ASP.NET手动触发页面验证控件事件

开发环境:.NET Framework 3.5.1 sp1 参考文章: http://www.codeproject.com/KB/aspnet/JavascriptValidation.aspx http://msdn.microsoft.com/zh-cn/library/aa479045.aspx http://www.cnblogs.com/minsentinel/archive/