学pyhton的第二十二天


 

原文链接:Python 图形化界面设计(Tkinter) - 简书 (jianshu.com)

相关博客链接

接第十八天Tkinter的内容:

单选按钮(控件:Radiobutton):

除共有属性外,还具有显示文本(text),返回变量(variable),返回值(value),响应函数名(command)等重要属性

示例代码如下:

# 单选按钮:
from tkinter import *def Dx():xx = {0: 'A', 1: 'B', 2: 'C'}p = '你选择了' + xx.get(var.get()) + '项'lab.config(text=p)root = Tk()
root.title('单选按钮')
lab = Label(root)
lab.pack()var = IntVar()
An1 = Radiobutton(root, text='A', variable=var, value=0, command=Dx)
An1.pack()
An2 = Radiobutton(root, text='B', variable=var, value=1, command=Dx)
An2.pack()
An3 = Radiobutton(root, text='C', variable=var, value=2, command=Dx)
An3.pack()root.geometry('250x100')
root.mainloop()

输出结果:

 复选框(控件:Checkbutton):

除共有属性外,还具有显示文本(text),返回变量(variable),返回值(value),选中返回值(onvalue),未选中默认返回值(offvalue)

示例代码如下:

# 复选框
from tkinter import *
import tkinterdef Fx():if CV1.get() == 0 and CV2.get() == 0 and CV3.get() == 0 and CV4.get() == 0:q = '你还没选喜欢的类型'else:q1 = '善良' if CV1.get() == 1 else ''q2 = '勇敢' if CV2.get() == 1 else ''q3 = '乐观' if CV3.get() == 1 else ''q4 = '开朗' if CV4.get() == 1 else ''q = '你选择了 %s %s %s %s 的类型' % (q1, q2, q3, q4)lab.config(text=q)root = tkinter.Tk()
root.title('复选框')
lab = Label(root, text='请选择你喜欢的类型')
lab.pack()CV1 = IntVar()
CV2 = IntVar()
CV3 = IntVar()
CV4 = IntVar()Fx1 = Checkbutton(root, text='善良', variable=CV1, onvalue=1, offvalue=0)
Fx1.pack()
Fx2 = Checkbutton(root, text='勇敢', variable=CV2, onvalue=1, offvalue=0)
Fx2.pack()
Fx3 = Checkbutton(root, text='乐观', variable=CV3, onvalue=1, offvalue=0)
Fx3.pack()
Fx4 = Checkbutton(root, text='开朗', variable=CV4, onvalue=1, offvalue=0)
Fx4.pack()ok = Button(root, text='确定', command=Fx)
ok.pack()lab2 = Label(root, text=' ')
lab2.pack()root.geometry('330x200')
root.mainloop()

输出结果: 

 列表框(Listbox)

在Tkinter中,列表框(Listbox)组件使用到的一些常用方法包括:

  1. insert(index, string):在指定的index位置插入一个字符串项目。tk.END可以被用作index来在列表末尾添加项目。

  2. delete(first, last=None):删除从first到last(包括)之间的所有项目。如果只提供了一个索引,则只删除该项目。

  3. get(first, last=None):返回从first到last(包括)之间的所有项目的列表。如果只提供了一个索引,则返回该索引处的项目。

  4. size():返回列表框中项目的数量。

  5. curselection():返回一个包含当前选中项目索引的元组。如果没有选中任何项目,它将返回一个空元组。

  6. bind(sequence, func):为列表框绑定一个事件处理函数。例如,你可以绑定<<ListboxSelect>>事件来在用户选择项目时执行某个函数。

  7. xview(*args):用于水平滚动列表框。

  8. yview(*args):用于垂直滚动列表框。

  9. **config(cnf=None, kw) 或 **configure(cnf=None, kw):用于配置或设置列表框的各种属性,比如cursor(光标)、font(字体)、fg(前景色)、height(行数)、highlightcolor(焦点高亮颜色)、highlightthickness(焦点高亮的厚度)、relief(边框阴影效果)、selectbackground(所选文本的背景颜色)、selectmode(选择模式)和width(部件宽度)等。

示例代码如下:

from tkinter import *def Csh():box1.delete(0, END)list_music = ['幻听.mp3', '多余的解释.mp3', '断桥残雪.mp3', '有何不可.mp3', '飞蛾.mp3']for music in list_music:box1.insert(END, music)def insert():if entry.get() != '':if box1.curselection() == ():box1.insert(box1.size(), entry.get())else:box1.insert(box1.curselection(), entry.get())def update():if entry.get() != '' and box1.curselection() != ():selected = box1.curselection()[0]box1.delete(selected)box1.insert(selected, entry.get())def delete():if box1.curselection() != ():box1.delete(box1.curselection())def clear():box1.delete(0, END)root = Tk()
root.title('列表框')
root.geometry('400x300')label = Label(root, text='Music', fg='Red', relief=SUNKEN)
label.place(rely=0.0, width=145, height=30)frame1 = Frame(root, relief=RAISED)
frame1.place(relx=0.0, rely=0.1)frame2 = Frame(root, relief=GROOVE)
frame2.place(relx=0.5)box1 = Listbox(frame1)
box1.pack()entry = Entry(frame2)
entry.pack()b1 = Button(frame2, text='初始化', command=Csh)
b1.pack(fill=X)# b2 = Button(frame2, text='添加', command=insert)  # 添加和插入功能一样
# b2.pack(fill=X)b3 = Button(frame2, text='插入', command=insert)
b3.pack(fill=X)b4 = Button(frame2, text='修改', command=update)
b4.pack(fill=X)b5 = Button(frame2, text='删除', command=delete)
b5.pack(fill=X)b6 = Button(frame2, text='清空', command=clear)
b6.pack(fill=X)root.mainloop()

输出结果:

组合框(Combobox)

四则运算示例:

from tkinter.ttk import *
from tkinter import *def Szys(event):a = float(p1.get())b = float(p2.get())dic = {0: a + b, 1: a - b, 2: a * b, 3: a / b}c = dic[comb.current()]lab.config(text=str(c))root = Tk()
root.title('四则运算')
root.geometry('320x240')p1 = Entry(root)
p1.place(x=10, y=20)p2 = Entry(root)
p2.place(x=170, y=20)var = StringVar()comb = Combobox(root, textvariable=var, values=['加', '减', '乘', '除'])
comb.place(relx=0.5, rely=0.5, anchor='center')
comb.bind('<<ComboboxSelected>>', Szys)lab = Label(root, text='结果')
lab.place(relx=0.2, rely=0.9, anchor='center')root.mainloop()

输出:

菜单(menu) 

代码示例:

from tkinter import *def new():k = '新建'lab.config(text=k)def ope():k = '打开'lab.config(text=k)def save():k = '保存'lab.config(text=k)def cut():k = '剪切'lab.config(text=k)def cop():k = '复制'lab.config(text=k)def pas():k = '粘贴'lab.config(text=k)def popupmenu(event):  # 创建弹出式菜单mainmenu.post(event.x_root, event.y_root)  # 将菜单与鼠标位置关联起来root = Tk()
root.title('菜单')
root.geometry('320x240')
lab = Label(root, text='显示信息', font=('楷体', 12, 'bold'))   # 创建标签
lab.place(relx=0.2, rely=0.2)mainmenu = Menu(root, tearoff=0)  # tearoff 参数用于控制是否允许用户从主菜单中“撕下”一个子菜单,使其成为一个独立的浮动窗口。
menuFile = Menu(mainmenu, tearoff=0)  # 当 tearoff 设置为 False 或 0 时,这个功能就会被禁用,用户不能从主菜单中撕下子菜单。
mainmenu.add_cascade(label='文件', menu=menuFile)  # 添加文件菜单
menuFile.add_command(label='新建', command=new)
menuFile.add_command(label='打开', command=ope)
menuFile.add_command(label='保存', command=save)
# menuFile.add_separator()  # 分割线
menuFile.add_command(label='退出', command=root.destroy)  # 添加退出菜单menuEdit = Menu(mainmenu, tearoff=0)
mainmenu.add_cascade(label='编辑', menu=menuEdit)  # 添加编辑菜单
menuEdit.add_command(label='剪切', command=cut)
menuEdit.add_command(label='复制', command=cop)
menuEdit.add_command(label='粘贴', command=pas)root.config(menu=mainmenu)  # 将主菜单与窗口关联起来
root.bind("<Button-3>", popupmenu)  # 绑定鼠标右键事件root.mainloop()

输出结果:右图是在窗体任意地方右击鼠标按键可显示选项

 

 未完待续。。。。。。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法学习笔记Day9——动态规划基础篇

一、介绍 本文解决几个问题&#xff1a;动态规划是什么&#xff1f;解决动态规划问题有什么技巧&#xff1f;如何学习动态规划&#xff1f; 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法&#xff0c;只不过在计算机问题上应用比较多&#xff…

opencv_17_翻转与旋转

一、图像翻转 1&#xff09;void flip_test(Mat& image); 2&#xff09;void ColorInvert::flip_test(Mat& image) { Mat dst; //flip(image, dst, 0); //上下翻转 flip(image, dst, 1); //左右翻转 // flip(image, dst, -1); //180度翻转 imsho…

OpenVINO安装教程 vcpkg版

通过 vcpkg 安装 OpenVINO™ Runtime 请注意&#xff0c;vcpkg 发行版&#xff1a; 仅提供 C/C API 不支持 NPU 推理 专用于所有主要操作系统的用户&#xff1a;Windows、Linux 和 macOS &#xff08;所有 x86_64 / ARM64 架构&#xff09; 系统要求处理器说明软件要求 完整…

B站美化插件,支持自定义,太酷辣~

大公司的软件和网站通常具有优雅的默认界面设计。 以国内二次元聚集地B站为例&#xff0c;可以说它的UI设计非常吸引人。与其他视频网站繁复的设计相比&#xff0c;B站的界面设计可以说是遥遥领先 然而&#xff0c;总有些人对默认的用户界面感到不满意&#xff0c;他们渴望尝试…

fiddler提示“The system proxy was changed.Click to reenable capturing.”的原因及解决办法

一、现象描述 运行fiddler时&#xff0c;提示“The system proxy was changed.Click to reenable capturing.”&#xff0c;即使点击了该提示&#xff0c;重新进行抓包&#xff0c;不一会儿&#xff0c;该提示又会出现&#xff0c;又不能进行抓包了。 二、解决方法 2.1 原因一&…

输电线路的“天眼”:双目协同图像视频监测装置

在广袤的天地之间&#xff0c;纵横交错的输电线路如同血脉一般&#xff0c;为我们的生活输送着源源不断的电力。然而&#xff0c;这些“血脉”也常常面临着各种挑战&#xff0c;如外力破坏、恶劣天气等。为了守护这些重要的“生命线”&#xff0c;鼎信智慧研发了一款智能监控设…

云原生Kubernetes: K8S 1.29版本 部署GitLab

目录 一、实验 1.环境 2.搭建NFS 3.K8S 1.29版本 部署Redis 4.K8S 1.29版本 部署Postgresql 5.K8S 1.29版本 部署GitLab 6.K8S 部署istio微服务 7.K8S 部署ingress应用路由 二、问题 1.K8S部署gitlab报错 2.gitlab创建失败 3.生成网关资源报错 4.安装istio 报错 …

APP自定义身份证相机(Android +iOS)

基本上同时兼容安卓和苹果的插件都需要付费&#xff0c;这里我找了2个好用的免费插件 1.仅支持安卓&#xff1a;自定义身份证相机&#xff08;支持蒙版自定义&#xff09;&#xff0c;内置蒙版&#xff0c;照片预览&#xff0c;身份证裁剪 - DCloud 插件市场、 2.支持iOS(已测…

泰迪智能科技受邀参加2024年粤港澳大湾区产教融合技能人才培养联盟理事会会议

4月24日下午&#xff0c;2024年粤港澳大湾区产教融合技能人才培养联盟&#xff08;以下简称联盟&#xff09;理事会会议在白云区成功举办。 会议由广州市人力资源和社会保障局、广州市发展和改革委员会、广州市教育局、广州市工业和信息化局、广州市总工会等单位指导&#xff…

Python实现对规整的二维列表中每个子列表对应的值求和

目录 一、二维列表及其结构 二、对应位置元素求和的逻辑 三、代码实现 四、优化与改进 五、实际应用场景 六、扩展与变体 七、总结 在Python编程中&#xff0c;处理二维列表&#xff08;即列表的列表&#xff09;是一个常见的任务。有时候我们需要对二维列表中每个子列表…

多线程编程7——wait和notify、notifyAll

线程最大的问题就是抢占式执行&#xff0c;随机调度。可以通过一些API让线程主动阻塞&#xff0c;主动放弃CPU&#xff0c;从而控制线程之间的执行顺序。比如&#xff1a;join&#xff0c;sleep&#xff0c;wait和notify、notifyAll 前面章节已经介绍过 join 和 sleep了&#…

计算机网络-IPv6地址规范与分类

昨天学习了IPv6的基础概念&#xff0c;了解了IPv6的由来以及地址格式&#xff0c;今天继续学习下IPv6的地址分类与表示。 一、IPv6地址缩写规范 IPv6地址的长度为128 bit。一般用冒号分割为8段&#xff0c;每一段16 bit&#xff0c;每一段内用十六进制表示。 IPv6地址格式 那12…

【kettle004】kettle访问本地MySQL数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下MySQL关系数据库相关知识体系 kettle访问MySQL数据库并处理数据至execl文件…

详解SPI、I2C、UART、I2S、GPIO、SDIO、CAN

总线,总线,总要陷进里面。这世界上的信号都一样,但是总线却成千上万,让人头疼。 总的来说,总线有三种:内部总线、系统总线和外部总线。内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各插件板与系统板之间的总线,用于插件板一…

为什么要进行人脸识别?

人脸识别技术被广泛应用于各种场景和行业&#xff0c;其主要目的包括但不限于以下几点&#xff1a; 1. **安全验证**&#xff1a;人脸识别可以用作身份验证的一种方式&#xff0c;确保只有授权人员才能进入特定的区域或访问敏感信息。例如&#xff0c;用于解锁手机或电脑、进入…

Linux---为什么会有粘滞位?

在前面已经讲过目录的rwx权限&#xff1a; 可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 有可写权限(w):如果目录没有可写权限&#xff0c;则无法在目录中创建文件, 也无法在目录中删除文件.可执行权限(x): 如果目录没有可执行权限, 则无法cd到…

D-Wave 推出快速退火功能,扩大量子计算性能增益

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1400字丨6分钟阅读 摘要&#xff1a;量子计算公司 D-Wave 宣布在其 Leap™ 实时量子云服务中的所有量子处理单元 (QPU) 上推出新的快速退火功能。…

Java 网络编程之TCP(五):分析服务端注册OP_WRITE写数据的各种场景(二)

接上文 二、注册OP_WRITE写数据 服务端代码&#xff1a; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; import java.nio.channels.S…

RFC 6071: IP Security (IPsec) and Internet Key Exchange (IKE) Document Roadmap

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/96882d1fb67b4383bc77c4dd421f7b

【一刷《剑指Offer》】面试题 10:二进制中 1 的个数

力扣对应题目链接&#xff1a;191. 位1的个数 - 力扣&#xff08;LeetCode&#xff09; 牛客对应题目链接&#xff1a;二进制中1的个数_牛客题霸_牛客网 一、《剑指Offer》内容 核心考点 &#xff1a;二进制计算。 二、分析问题 1、循环检查二进制位 可以直接循环检查给定数字…