python使用tkinter和ttkbootstrap制作UI界面(二)

这次讲解UI界面常用的主键,延续上文的框架进行编写,原界面如下:
在这里插入图片描述

Combobox组件应用(下拉框)

        """Combobox组件"""global comvalue_operatorcomvalue_operator = tk.StringVar()value_operator = ttk.Combobox(self.frame_two, textvariable=comvalue_operator, width=15)value_operator["values"] = ["1", "2"]value_operator.current(0)value_operator.place(x=550, y=50)

效果如下:
在这里插入图片描述

ScrolledText组件应用(多行文本)

        """ScrolledText组件"""scr_explain = scrolledtext.ScrolledText(self.frame_two, font=('微软雅黑', 10), width=102, height=11)scr_explain.place(x=10, y=400)

效果如下:
在这里插入图片描述

Meter组件应用(圆形进度表)

        """Meter组件"""progress_bar = ttkbootstrap.Meter(master=self.frame_two,bootstyle="success",subtextstyle="warning",stripethickness=10,metertype="full",  # 将仪表显示为一个完整的圆形或半圆形(semi)# wedgesize=5, #设置弧周围的指示器楔形长度,如果大于 0,则此楔形设置为以当前仪表值为中心的指示器amounttotal=100,  # 仪表的最大值,默认100amountused=100,  # 仪表的当前值metersize=130,  # 仪表大小showtext=True,  # 指示是否在仪表上显示左、中、右文本标签interactive=False,  # 是否可以手动调节数字的大小# textleft='进度:',  # 插入到中心文本左侧的短字符串textright='%',textfont="-size 20",  # 中间数字大小# subtext="  ",subtext="完成",subtextfont="-size 8",  # 文本大小)progress_bar.place(x=550, y=150)

效果如下:
在这里插入图片描述

Treeview组件(数据表单)

        """Treeview组件"""tree_top = ["信道", "制式", "速率", "频宽"]frame = Frame(self.frame_two)frame.place(x=10, y=10, width=500)# 设置x轴和y轴的滚动条ybar = ttk.Scrollbar(frame, orient=VERTICAL)ybar.pack(side='right', fill='y')xbar = ttk.Scrollbar(frame, orient=tk.HORIZONTAL)xbar.pack(side='bottom', fill='x')# 创建表格self.tree_date = ttk.Treeview(frame, show='tree headings', height=15)self.tree_date.pack(side='left', fill='y')self.tree_date.configure(yscrollcommand=ybar.set, xscrollcommand=xbar.set)# 使用command参数来绑定treevievwybar.config(command=self.tree_date.yview)xbar.config(command=self.tree_date.xview)# 定义列date_columns = tree_topself.tree_date["columns"] = date_columns# 设置列宽度self.tree_date.column('#0', width=70, anchor="center", stretch=False)self.tree_date.column(tree_top[0], width=120, anchor="center")self.tree_date.column(tree_top[1], width=120, anchor="center")self.tree_date.column(tree_top[2], width=120, anchor="center")self.tree_date.column(tree_top[3], width=120, anchor="center")# 添加列名self.tree_date.heading("#0", text="场景")for j in date_columns:self.tree_date.heading(j, text=j)

效果如下:
在这里插入图片描述

Style风格应用(兼容老的参数设置)

        """Style使用"""style = ttk.Style()style.configure('custom.TButton', font=('宋体', 20), background='red')style.configure("My.TButton", font=('微软雅黑', 10), width=9, height=2)test_button_one = ttkbootstrap.Button(self.frame_two, text="测试按键一")test_button_one["style"] = "custom.TButton"test_button_one.place(x=750, y=50)test_button_two = ttkbootstrap.Button(self.frame_two, text="测试按键二")test_button_two["style"] = "My.TButton"test_button_two.place(x=750, y=150)

效果如下:
在这里插入图片描述
本次在ui_test.py新增代码,新增如下:

import ttkbootstrap
from tkinter import Framefrom ui_show.test_one import UiTestOne
from ui_show.test_two import UiTestTwoclass UiTest(object):def __init__(self):self.window = ttkbootstrap.Window()self.frame_one = Frame()self.frame_two = Frame()def main_interface(self):"""测试主界面"""# 设置标题self.window.title('测试UI界面')# 屏幕的尺寸大小sw = self.window.winfo_screenwidth()sh = self.window.winfo_screenheight()# 设置UI界面的高度和宽度ww = 1000wh = 700# 窗口居中设置x = (sw - ww) / 2y = (sh - wh) / 2self.window.geometry("%dx%d+%d+%d" % (ww, wh, x, y))# 设置窗口是否可以变化长宽,默认可变self.window.resizable(width=False, height=False)"""多窗口设置"""all_notebook = ttkbootstrap.Notebook(self.window)all_notebook.pack(padx=10, pady=5, fill=ttkbootstrap.BOTH, expand=True)self.frame_one = Frame(all_notebook)self.frame_two = Frame(all_notebook)all_notebook.add(self.frame_one, text='测试界面一')all_notebook.add(self.frame_two, text='测试界面二')def run_main(self):self.main_interface()ui_test_one = UiTestOne(self.frame_one)ui_test_one.show_interface()ui_test_two = UiTestTwo(self.frame_two)ui_test_two.show_interface()self.window.mainloop()if __name__ == '__main__':ui_test = UiTest()ui_test.run_main()

在test_two.py写入界面二,代码如下:

import ttkbootstrap
import tkinter as tkfrom tkinter import ttk, scrolledtext, Frame, VERTICALclass UiTestTwo(object):def __init__(self, window):self.frame_two = windowdef show_interface(self):"""Combobox组件"""global comvalue_operatorcomvalue_operator = tk.StringVar()value_operator = ttk.Combobox(self.frame_two, textvariable=comvalue_operator, width=15)value_operator["values"] = ["1", "2"]value_operator.current(0)value_operator.place(x=550, y=50)"""ScrolledText组件"""scr_explain = scrolledtext.ScrolledText(self.frame_two, font=('微软雅黑', 10), width=102, height=11)scr_explain.place(x=10, y=400)"""Style使用"""style = ttk.Style()style.configure('custom.TButton', font=('宋体', 20), background='red')style.configure("My.TButton", font=('微软雅黑', 10), width=9, height=2)test_button_one = ttkbootstrap.Button(self.frame_two, text="测试按键一")test_button_one["style"] = "custom.TButton"test_button_one.place(x=750, y=50)test_button_two = ttkbootstrap.Button(self.frame_two, text="测试按键二")test_button_two["style"] = "My.TButton"test_button_two.place(x=750, y=150)"""Meter组件"""progress_bar = ttkbootstrap.Meter(master=self.frame_two,bootstyle="success",subtextstyle="warning",stripethickness=10,metertype="full",  # 将仪表显示为一个完整的圆形或半圆形(semi)# wedgesize=5, #设置弧周围的指示器楔形长度,如果大于 0,则此楔形设置为以当前仪表值为中心的指示器amounttotal=100,  # 仪表的最大值,默认100amountused=100,  # 仪表的当前值metersize=130,  # 仪表大小showtext=True,  # 指示是否在仪表上显示左、中、右文本标签interactive=False,  # 是否可以手动调节数字的大小# textleft='进度:',  # 插入到中心文本左侧的短字符串textright='%',textfont="-size 20",  # 中间数字大小# subtext="  ",subtext="完成",subtextfont="-size 8",  # 文本大小)progress_bar.place(x=550, y=150)"""Treeview组件"""tree_top = ["信道", "制式", "速率", "频宽"]frame = Frame(self.frame_two)frame.place(x=10, y=10, width=500)# 设置x轴和y轴的滚动条ybar = ttk.Scrollbar(frame, orient=VERTICAL)ybar.pack(side='right', fill='y')xbar = ttk.Scrollbar(frame, orient=tk.HORIZONTAL)xbar.pack(side='bottom', fill='x')# 创建表格self.tree_date = ttk.Treeview(frame, show='tree headings', height=15)self.tree_date.pack(side='left', fill='y')self.tree_date.configure(yscrollcommand=ybar.set, xscrollcommand=xbar.set)# 使用command参数来绑定treevievwybar.config(command=self.tree_date.yview)xbar.config(command=self.tree_date.xview)# 定义列date_columns = tree_topself.tree_date["columns"] = date_columns# 设置列宽度self.tree_date.column('#0', width=70, anchor="center", stretch=False)self.tree_date.column(tree_top[0], width=120, anchor="center")self.tree_date.column(tree_top[1], width=120, anchor="center")self.tree_date.column(tree_top[2], width=120, anchor="center")self.tree_date.column(tree_top[3], width=120, anchor="center")# 添加列名self.tree_date.heading("#0", text="场景")for j in date_columns:self.tree_date.heading(j, text=j)

本次讲解UI常用组件的写法,后续将更新组件的调用方法,有疑问欢迎找博主进行答疑,我是活动的笑脸,希望大家积极点赞,本篇到此结束。

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

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

相关文章

【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活

【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活 文章目录 【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活一、介绍二、联系工作三、方法3.1 对比token学习模块(CTLM)3.2 Class token对比学习3.3 标签前景激活模块 四、实验结果 Cont…

【云计算】云数据中心网络(七):负载均衡

《云网络》系列,共包含以下文章: 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络(一):VPC云数据中心网络(二):弹性公网 IP云数据中心网络(三)…

日常小bug

1.mybatis-config.xml中记载sql的映射文件的方式 <mappers><!-- 方法一&#xff1a;使用xml文件进行注册,注意&#xff1a;这里是斜线--><mapper resource"com/dao/UserMapper.xml"/><!-- 方法二&#xff1a;使用class进行注册&#xff0c;注…

C语言-单片机:STM32程序烧录的几种方法

STM32微控制器提供了多种程序烧录&#xff08;也称为编程或固件更新&#xff09;方式&#xff0c;这些方法允许用户将编译后的程序代码&#xff08;通常为HEX或BIN格式&#xff09;下载到MCU的闪存中。以下是几种常见的STM32程序烧录方式&#xff1a; ST-LINK&#xff1a; ST-L…

在Ubuntu 22.04上安装配置VNC实现可视化

前面安装的部分可以看我这篇文章 在Ubuntu 18.04上安装配置VNC实现Spinach测试可视化_ubuntu18开vnc-CSDN博客 命令差不多一样&#xff1a; sudo apt update sudo apt install xfce4 xfce4-goodies sudo apt install tightvncserver这个时候就可以启动server了 启动server&…

Linux RHCE练习之远程连接服务实战

Linux RHCE练习之远程连接服务实战 要求 主机一 主机名&#xff1a;server.example.comip: 172.25.254.100建立用户timinglee&#xff0c;其密码为timinglee 主机二 主机名&#xff1a;client.example.comip: 172.25.254.200 实现 主机一实现 [rootserver100 ~]# hostn…

C++:map和set的使用

一、关联式容器介绍 在学习map和set之前&#xff0c;我们接触到的容器有&#xff1a;vector、list、stack、queue、priority_queue、array&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 关联式容器也是用…

解锁PDF潜能:一站式PDF处理工具,让文件管理更高效!

在这个数字化时代&#xff0c;PDF文件因其便携性和安全性成为了我们日常工作和学习中不可或缺的一部分。但你是否曾遇到过PDF文件加密、需要合并拆分、或转换格式的难题&#xff1f;别担心&#xff0c;今天我们将为你介绍一款功能强大的PDF处理工具&#xff0c;它将彻底改变你对…

李沐-16 PyTorch 神经网络基础【动手学深度学习v2】

注&#xff1a;1. 沐神对应章节视频出处 2.代码使用Jupyter Notebook运行更方便 3.文章笔记出处 一、层和块 层&#xff1a;层&#xff08;1&#xff09;接受一组输入&#xff0c; &#xff08;2&#xff09;生成相应的输出&#xff0c; &#xff08;3&#xff09;由一组可调整…

【Camera Framework笔记】二、Camera Native Framework架构①

一、总体架构&#xff1a; service -> opencamera -> client&#xff08;api1/api2&#xff09; -> device3&#xff08;hal3&#xff09; | | &#xff08;不opencamera…

Linux网络编程--网络传输

Linux网络编程--网络传输 Linux网络编程TCP/IP网络模型网络通信的过程局域网通信跨网络通信&#xff1a;问题总结&#xff1a; Linux网络编程 TCP/IP网络模型 发送方&#xff08;包装&#xff09;&#xff1a; 应用层&#xff1a;HTTP HTTPS SSH等 —> 包含数据&#xff0…

终极版商城平台 涵盖虚拟商品全功能的商城平台 全能商城小程序 智慧商城系统 全品类百货商城服务

终极版商城平台 涵盖虚拟商品全功能的商城平台 全能商城小程序 智慧商城系统 全品类百货商城服务 含uniapp源码 全功能商城系统&#xff1a;完美运营版&#xff0c;简洁无冗余 这款商城系统完美集成了拼团、团购、秒杀、积分兑换、砍价活动&#xff0c;同时支持实物商品与虚拟…

2010年认证杯SPSSPRO杯数学建模B题(第一阶段)交通拥堵问题全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 交通拥堵问题 B题 Braess 悖论 原题再现&#xff1a; Dietrich Braess 在 1968 年的一篇文章中提出了道路交通体系当中的Braess 悖论。它的含义是&#xff1a;有时在一个交通网络上增加一条路段&#xff0c;或者提高某个路段的局部通行能力&a…

开发语言漫谈-Vue

Vue严格说来不是一门语言&#xff0c;它是Javascript的一个框架。如同Spring是Java语言的一个框架。只是当下为了开发效率&#xff0c;很少有人使用原生Javascript&#xff0c;多少得选择某种框架。类似的框架实在太多&#xff0c;bootstrap、layui、Angular、jQuery、react、E…

深度学习知识点:循环神经网络(RNN)、长短期记忆网络(LSTM)、门控循环单元(GRU)

深度学习知识点&#xff1a;循环神经网络&#xff08;RNN&#xff09;、长短期记忆网络&#xff08;LSTM&#xff09;、门控循环单元&#xff08;GRU&#xff09; 前言循环神经网络&#xff08;RNN&#xff09;RNNs&#xff08;循环神经网络&#xff09;训练和传统ANN&#xff…

VulBG: 构建行为图加强基于深度学习的漏洞检测模型

近年来&#xff0c;人们提出了基于深度学习&#xff08;DL&#xff09;的漏洞检测系统&#xff0c;用于从源代码中自动提取特征。这些方法在合成数据集上可以实现理想的性能&#xff0c;但在检测真实世界的漏洞数据集时&#xff0c;准确率却大幅下降。此外&#xff0c;这些方法…

OpenHarmony网络协议通信—nanopb

简介 nanopb是一种小代码量的协议缓冲区实现&#xff0c;适用于任何内存受限的系统。 下载安装 直接在OpenHarmony-SIG仓中搜索nanopb并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 将下载的Nanopb库代码存在以下路径&#xff1a;./third_party/nanopb 修改添…

docker安装并跑通QQ机器人实践(3)-bs-nonebot搭建

NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架&#xff08;下称 NoneBot&#xff09;&#xff0c;它基于 Python 的类型注解和异步优先特性&#xff08;兼容同步&#xff09;&#xff0c;能够为你的需求实现提供便捷灵活的支持。同时&#xff0c;NoneBot 拥有大…

如何在 Netlify 上手动部署 React 和 TypeScript 项目

在本教程中&#xff0c;我将教你如何使用 Vite 在 Netlify 上手动部署 React 和 TypeScript 项目。我将向你展示一些快速简单的步骤&#xff0c;让你的项目能够立即运行。 要跟着本教程操作&#xff0c;有几个先决条件&#xff1a; 一个现有的 React 和 TypeScript 项目&…

Https 中的CA证书

先理清整体的流程&#xff0c;再去看ca证书&#xff0c;对称加密&#xff0c;非对称加密 HTTPS的工作原理涉及非对称加密技术&#xff0c;其中根证书起着至关重要的作用。以下是其工作流程&#xff1a; 数字证书&#xff1a;服务器必须首先向认证机构&#xff08;CA&#xff…