学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,一经查实,立即删除!

相关文章

数据结构 : 树的分类及在数据库索引中的运用

文章目录 一 &#xff1a;树的分类1、二叉树&#xff08;Binary Tree&#xff09;&#xff1a;2、二叉搜索树&#xff08;Binary Search Tree, BST&#xff09;&#xff1a;3、平衡二叉树&#xff1a;4、字典树&#xff08;Trie&#xff09;&#xff1a;5、多叉树&#xff08;M…

算法学习笔记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;他们渴望尝试…

接口自动化测试框架

接口自动化测试框架&#xff1a;pythonunittest/pytestrequestsddtopenpyxlpymysqllogging 框架设计思路数据驱动结构分层&#xff08;可读性、可维护性、可扩展性&#xff09;数据驱动将维护数据与代码分离&#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 原因一&…

Java 高级面试问题及答案

Java 高级面试问题及答案 问题 1: 在 Java 中&#xff0c;什么是强引用、软引用、弱引用和虚引用&#xff1f;它们分别有什么用途&#xff1f; 探讨过程&#xff1a; 在Java中&#xff0c;对象的引用类型决定了垃圾回收器如何回收对象。强引用是最常见的&#xff0c;它阻止垃…

java 根据对象的boolean字段对集合进行排序

java 根据对象的boolean字段对集合进行排序 ‍ 需求大概如下&#xff1a; 把boolean为true的排序到前面,false排序到后面 ‍ 排序后, boolean为true的会在前面, 为false的会在后面 , isHasMaterial 为boolean类型 Data Builder public class MoguPoiBaseInfo {/*** 是否有…

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

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

LeetCode 1146. 快照数组【哈希表+二分查找】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#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(已测…

打水问题(贪心算法)

题目&#xff1a;有n个人排队到r个水龙头去打水&#xff0c;他们装满水桶的时间t1、t2………tn为整数且各不相等&#xff0c;应如何安排他们的打水顺序才能使他们总共花费的时间最少&#xff1f;通过键盘输入排队打水的人数以及每人打水的时间和水龙头数&#xff0c;使用贪心算…

泰迪智能科技受邀参加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…

3-成功初始化 Kubernetes 控制平面后如何操作

成功初始化 Kubernetes 控制平面后的一系列指示和建议&#xff0c;用于帮助你开始使用你的 Kubernetes 集群。下面是详细的解释和步骤&#xff1a; kubeadm init --apiserver-advertise-address 172.19.35.202 --image-repository registry.cn-hangzhou.aliyuncs.com/google_c…

MATLAB 基础使用教程

MATLAB 的基本使用主要包括如下几个方面&#xff1a;熟悉 MATLAB 环境&#xff0c;数据的输入输出&#xff0c;基本的数学运算&#xff0c;图形绘制&#xff0c;编程等。以下通过一些例子进行简要说明。 1. 熟悉 MATLAB 环境 启动 MATLAB 后&#xff0c;你会看到 MATLAB 的桌面…