生信软件开发1 - 设计一个简单的Windwos风格的GUI报告软件

1. 安装基础库

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

pip install pywinstyles

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

软件界面

# 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.configure('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. 测试结果

根据业务需求,可自行调整报告生成函数。
生成TXT文件结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信与基因组学

每一份鼓励是我坚持下去动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值