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

2024-04-19 21:52

本文主要是介绍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常用组件的写法,后续将更新组件的调用方法,有疑问欢迎找博主进行答疑,我是活动的笑脸,希望大家积极点赞,本篇到此结束。

这篇关于python使用tkinter和ttkbootstrap制作UI界面(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918526

相关文章

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex