学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 tkinter


def 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.mfbz.cn/a/580175.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp对uni.request()的封装以及使用

官方文档 uni.request(OBJECT) | uni-app官网 (dcloud.net.cn) uni.request参数 参数名说明url是写api地址的data是用来传值的对于 GET 方法&#xff0c;会将数据 转换为 query string。例如 { name: name, age: 18 } 转换后的结果是 namename&age18。对于 POST 方法且 …

BUUCTF:Basic 解析(一)

一、Linux Labs 打开靶场 F12 源代码啥也没有&#xff0c;但是题目给出了 ssh 连接的用户名密码端口号及主机&#xff0c;推测应该是要连接&#xff0c;打开 XShell 连接 设置用户名及密码 连接成功&#xff0c;随后找到 flag 二、BUU LFI COURSE 1 打开靶场 F12 检查源代码…

微火快报:全域外卖服务商是什么?如何成为全域外卖服务商?

最近&#xff0c;互联网行业又出现了一个新名词——全域外卖服务商&#xff0c;很多人都预感到它可能是下一个风口&#xff0c;却因为不了解概念和找不到入局的途径而止步不前。那么本期&#xff0c;我们就来重点讲一讲全域外卖服务商的概念、发展前景以及入局的途径。 所谓的全…

电脑进水不用怕,教你几招恢复如初!

电脑进水是一种常见但严重的问题&#xff0c;可能会导致电脑损坏&#xff0c;甚至无法正常使用。在遇到电脑进水的情况下&#xff0c;正确的处理方式至关重要&#xff0c;可以最大程度地减少损害并提高修复成功的可能性。本文将介绍三种解决电脑进水问题的方法&#xff0c;帮助…

flutter笔记-主要控件及布局

文章目录 1. 富文本实例2. Image2.1 本地图片2.2 网络图片 笔记3. 布局4. 滑动相关view4.1 GridView类似九宫格view4.2 ListView 关于widget的生命周期的相关知识这里就不做介绍&#xff0c;和很多语言类似&#xff1b; 1. 富文本实例 Dart中使用richtext&#xff0c;示例如下…

怎么通过PHP语言实现远程控制棋牌室

怎么通过PHP语言实现远程控制棋牌室呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制棋牌室&#xff0c;通过专用的包间控制器&#xff0c;来实现包间内所有电器以及门锁的独立控制。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规…

deepin-IDE, 体验AI编程,拿精美定制礼品!

内容来源&#xff1a;deepin&#xff08;深度&#xff09;社区 UOS AI 已经上线半年了&#xff0c;想必很多小伙伴在这半年里都体会到了人工智能的魅力。 那你们知道&#xff0c;在 deepin-IDE 中&#xff0c;可以用 AI 写代码吗&#xff1f;deepin-IDE 结合强大的 AI 编辑代码…

合合信息Embedding模型获得MTEB中文榜单第一

前言 最近几年&#xff0c;可以说大语言模型汇聚了所有的光彩&#xff0c;大语言模型的飞速发展更是吸引着社会各界的目光&#xff0c;这些模型的强大能力源自于Embedding技术的支撑&#xff0c;这种技术将语言转化为机器可理解的数值向量。随着大型语言模型的不断突破&#x…

ssh 文件传输:你应该掌握的几种命令行工具

这篇文章主要分享一下我使用过的 ssh 传输文件的进阶路程&#xff0c;从 scp -> lrzsz -> trzsz&#xff0c;希望能给你带来一些帮助&#xff5e; scp scp 命令可以用于在 linux 系统之间复制文件&#xff0c;具体的语法可以参考下图 其实使用起来也还比较方便&#x…

java-注解

简介 自定义注解 定义 // 自定义注解 public interface MyAnnotation {// 注解的属性// value是注解的一个属性&#xff0c;如果只有一个属性&#xff0c;建议使用valueString value() default "";boolean enabled() default true;String[] exclude() default {}; }使…

适用于Windows和Mac的十大误删除数据恢复软件

数据恢复是从辅助存储或可移动文件中找回丢失、删除或损坏的数据的过程。数据丢失的原因有很多。因此&#xff0c;有必要恢复已删除的数据。有各种可用的软件工具&#xff0c;使用户能够恢复任何类型的已删除数据。但是&#xff0c;任何数据恢复都有四个主要阶段。他们正在修复…

数据库变更时,OceanBase如何自动生成回滚 SQL

背景 在开发中&#xff0c;数据的变更与维护工作一般较频繁。当我们执行数据库的DML操作时&#xff0c;必须谨慎考虑变更对数据可能产生的后果&#xff0c;以及变更是否能够顺利执行。若出现意外数据丢失、操作失误或语法错误等情况&#xff0c;我们必须迅速将数据库恢复到变更…

Altera FPGA 配置flash读写

目录 一、读写控制器的配置 二、生成flash的配置文件 三、关于三种配置文件的大小 四、其他 一、读写控制器的配置 Altera ASMI Parallel&#xff08;下文简称ASMI)这个IP就仅仅是个Flash读写控制器&#xff0c;可以自由的设计数据来源。 关于这个IP的使用&#xff0c;可以…

BootStrap详解

Bootstrap简介 什么是BootStrap&#xff1f; BootStrap来自Twitter&#xff0c;是目前最受欢迎的响应式前端框Bootstrap是基于HTML、CSS、JavaScript的&#xff0c;它简洁灵活&#xff0c;使得Web开发更加快捷 为什么使用Bootstrap&#xff1f; 移动设备优先&#xff1a;自…

python学习笔记----判断语句(三)

一、布尔类型和比较运算符 1.1 布尔类型的字面量&#xff1a; True 表示真False 表示假 定义变量存储布尔类型数据&#xff1a; 变量名 布尔类型字面量 bool_1 True bool_2 False1.2 比较运算符 二、 if语句的基本格式 if 要判断的条件:条件成立时&#xff0c;要做的事…

【3GPP IAB】 3GPP支持IAB架构概述

1 概述 IAB用于回传链路的无线传输&#xff0c;对于NR高频尤其重要&#xff0c;3GPP协议讨论了IAB的可能架构和部署方式&#xff0c;一起来看看吧。 2 IAB 功能和接口 IAB尽量重用为接入定义的现有功能和接口。特别是&#xff0c;移动终端(MT)、gNB- DU、gNB- CU、UPF、AMF和S…

DFR初识

【0】前言 【1】什么Web的开发模式 web开发模式 目前主流的web开发模式有两种&#xff1a; 基于服务端渲染的传统web开发模式 - -前后端混合&#xff1a;BBS项目&#xff0c;图书管理系统-模板语言&#xff1a;dtl-flask&#xff0c;fastapi-go gin-vue&#xff0c;react-微信…

Stylus 精讲:掌握这款 CSS 预处理器,让你的样式编写提升到新境界!

Stylus 是一种先进的 CSS 预处理器&#xff0c;它允许你使用更加强大和优雅的方式来编写 CSS。Stylus 拥有很多现代语言所具有的特性&#xff0c;如混合&#xff08;Mixins&#xff09;、函数、条件语句等&#xff0c;这些特性使得 CSS 的编写变得更加灵活和高效。Stylus 还支持…

如何用OceanBase的 Load Data 导入CSV文件

0 前言 CSV文件&#xff08;Comma-Separated Values&#xff0c;字符分隔值&#xff09;是一种普遍采用的数据存储格式&#xff0c;有不少企业和机构都用它来进行数据的管理和存储。身为开发者&#xff0c;您可能经常遇到这样的需求&#xff1a;需要将CSV的数据导入OceanBase数…

信创需求激增,国产服务器操作系统赋能数字化转型

信创&#xff0c;即信息技术应用创新&#xff0c;是指在关键领域和环节推进信息技术的自主创新&#xff0c;构建安全可控的信息技术体系。随着数字化转型的加速&#xff0c;信创需求激增&#xff0c;国产服务器操作系统在其中扮演着至关重要的角色。国产服务器操作系统如何赋能…
最新文章