卡卷网
当前位置:卡卷网 / 每日看点 / 正文

用什么GUI平台开发高性能、美观性好的GUI?

作者:卡卷网发布时间:2024-12-09 14:09浏览数量:146次评论数量:0次

1. 安装基础库

使用Windows 11标题样式和主题自定义UI窗口库pywinstyles(github: github.com/Akascape/py-),结合python自带tkinter库设计一个报告GUI软件。

pip install pywinstyles # pywinstyles设置风格方式 pywinstyles.apply_style(window, style)

用什么GUI平台开发高性能、美观性好的GUI?  第1张

pywinstyles风格

2. 设计一个简单的Windwos风格的GUI报告软件


用什么GUI平台开发高性能、美观性好的GUI?  第2张

软件界面


# report.py import tkinter as tk import pywinstyles from tkinter import ttk def generate_report(sample_name, analysis_type): """模拟生信报告生成函数""" with open(f"{sample_name}_report.txt", "w") as f: # 写入表头 f.write(f"Sample Name\tAnalysis Type\n") # 写入内容 f.write(f"{sample_name}\t{analysis_type}\n") def on_selection_changed(event): """下拉框选择改变时触发事件""" global selected_value selected_value = combo_box.get() print(f"Selected value changed to: {selected_value}") # 创建主窗口 root = tk.Tk() # 应用mica主题 pywinstyles.apply_style(root, 'mica') label = tk.Label(root, text="mica风格界面") label.pack(pady=20) # 设置窗口标题 root.title("生信报告软件") # 设置窗口大小 root.geometry("800x600") # 内边距(水平方向)像素值 pad_x_value = 15 # 外边距(垂直方向)像素值 pad_y_value = 10 # 组件内部内边距 ipad_x_value = 5 # 组件外部外边距 ipad_y_value = 2 # 创建标签和输入框用于样本名称 # side设置边:tkinter.TOP(默认值)、tkinter.BOTTOM、tkinter.LEFT、tkinter.RIGHT # anchor设置锚点:tkinter.N(北,即顶部居中)、tkinter.NE(东北,即右上角)、tkinter.E(东,即右# 侧居中)、tkinter.SE(东南,即右下角)、tkinter.S(南,即底部居中)、tkinter.SW(西南,即左下 # 角)、tkinter.W(西,即左侧居中)、tkinter.NW(西北,即左上角)、tkinter.CENTER(居中) sample_name_label = tk.Label(root, text="样本名称:") sample_name_label.pack(anchor=tk.NW, side=tk.LEFT, padx=pad_x_value, pady=pad_y_value, ipadx=ipad_x_value, ipady=ipad_y_value) sample_name_entry = tk.Entry(root) sample_name_entry.pack(anchor=tk.NW,side=tk.LEFT, padx=pad_x_value, pady=pad_y_value, ipadx=ipad_x_value, ipady=ipad_y_value) # 创建标签和下拉菜单用于分析类型 analysis_type_label = tk.Label(root, text="报告类型:") analysis_type_label.pack(anchor=tk.NW, side=tk.LEFT, padx=pad_x_value, pady=pad_y_value, ipadx=ipad_x_value, ipady=ipad_y_value) style = ttk.Style() style.theme_use('clam') style.conp('TCombobox', font=('Arial', 12), fieldbackground='white', arrowcolor='blue') combo_box = ttk.Combobox(root, values=["WES报告", "WGS报告", "CNV-seq报告"]) combo_box.pack(anchor=tk.NW, side=tk.LEFT, padx=pad_x_value, pady=pad_y_value, ipadx=ipad_x_value, ipady=ipad_y_value) # 绑定事件处理函数 # 当使用Combobox的<<ComboboxSelected>>事件绑定函数后,在函数内部可以直接获取到改变后的值 combo_box.bind("<<ComboboxSelected>>", on_selection_changed) # 创建按钮用于生成报告 generate_button = tk.Button(root, text="生成报告", command=lambda: generate_report(sample_name_entry.get(), selected_value)) generate_button.pack(anchor=tk.NW,side=tk.LEFT, padx=pad_x_value, pady=pad_y_value, ipadx=ipad_x_value + 30, ipady=0) # 运行主循环 root.mainloop()

3. 测试结果

根据业务需求,可自行调整报告生成函数。

用什么GUI平台开发高性能、美观性好的GUI?  第3张

生成TXT文件结果

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码