[Python] Tkinter的食用方法_02_LabelFrame RadioButton CheckButton
#开始
Python的话 我是看的小甲鱼的视频 所以代码也是小甲鱼的修改版 本博客这里只是学习记录
小甲鱼是个很棒的老师,虽然经常飙车....
#第一个代码
from tkinter import * root = Tk(); v = IntVar(); #创建一个Int对象用于绑定选择框的状态 c = Checkbutton(root,text="测试按钮",variable=v); #创建一个CHeckbutton 设定归属于root c.pack(); l = Label(root,textvariable=v); #每次修改选择框的状态之后这里的变量v会实时改变 l.pack(); mainloop();
结果:
#第二个代码 (这里使用了循环实现了放置多个组件)
from tkinter import * root = Tk(); numbers = ["1","2","3","4"]; #定义一个 列表储存文本内容 v = []; #用来保存每一个选择框所对应的状态 本代码中添加了四个元素 for num in numbers: v.append(IntVar()); #为每一个选择框在v列表中创建一个状态变量 b = Checkbutton(root,text=num,variable=v[-1]); #并且每创建一个选择框在v列表中对应的都是最后一个 b.pack(anchor = W); #设置布局位置 mainloop();
b.pack(anchor = W); 这一行中的W指的是左边对齐 W指的是西边 相应的 N,S,W,E 表示上北下南左西右东
结果:
#第三个代码(单选框)
from tkinter import *; root = Tk(); v = IntVar(); #简单暴力 直接创建三个单选框 Radiobutton(root,text="1",variable = v,value=1).pack(anchor=W); Radiobutton(root,text="2",variable = v,value=2).pack(anchor=W); Radiobutton(root,text="3",variable = v,value=3).pack(anchor=W); # text是显示文本 variable绑定一个Int对象 三个单选框value的值不一样的话 表示选择那个就把那个的value值赋值给v mainloop();
结果:
#第四个代码
from tkinter import *; root = Tk(); LANGS = [ ("Python",1), ("Perl",2), ("Ruby",3), ("Lua",4), ]; #列表包含元祖的方式 v = IntVar(); v.set(1); #默认选择 for lang,num in LANGS: Radiobutton(root,text=lang,variable=v,value=num,indicatoron=False).pack(fill=X); #循环创建 indicatoron表示取消圆点图标 区别见下图 mainloop();
pack()函数里面参数的解释: (参考链接: https://www.douban.com/note/338163933/)
fill=X 当GUI窗体大小发生变化时,widget在X方向跟随GUI窗体变化
fill=Y 当GUI窗体大小发生变化时,widget在Y方向跟随GUI窗体变化
fill=BOTH 当GUI窗体大小发生变化时,widget在X、Y两方向跟随GUI窗体变化
结果:
注意显示风格被修改了 其次还有布局方式
#第五个代码
from tkinter import *; root = Tk(); group = LabelFrame(root,text="最好的语言是?",padx=5,pady=5); #创建一个标签框架 padx和pady表示框架内内容顶部5像素 左部5像素间距 group.pack(padx=10,pady=10); #表示框架顶部10像素 左部10像素间距 LANGS = [ ("Python",1), ("Perl",2), ("Ruby",3), ("Lua",4), ]; v = IntVar(); for lang,num in LANGS: Radiobutton(group,text=lang,variable=v,value=num).pack(anchor=W); #修改了单选框的归属 mainloop();
结果:
突然感觉逼格高了...
大概就这样了 晚安...
作者:cjdty
出处:https://www.cnblogs.com/cjdty/p/10328635.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库