You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GUI中通过按钮打开可编辑的独立窗口(Python Tkinter实现)

Tkinter 租赁系统GUI实现方案

核心修改思路

  • 单个Tkinter程序仅保留1个Tk()主窗口实例,子窗口统一使用Toplevel()创建,避免多窗口冲突
  • 给按钮绑定的触发函数增加品类参数,通过lambda语法给不同按钮绑定不同的参数值,就能实现点击不同按钮打开对应内容的页面
  • 子窗口内的文本、复选框都可以直接按需求添加Label、Checkbutton组件实现

完整可运行代码

from tkinter import *

# 唯一主窗口实例
main_window = Tk()
main_window.title("4 Dry Out e-Rental")

# 提前配置每个品类对应的详情说明,后续调整内容直接修改这里即可
category_desc = {
    "Extractors/Cleaners": "设备特点:吸力强、适配多种清洁剂,适用于地毯、硬地面深度清洁\n租赁价格:75元/天,3天起租享9折优惠",
    "Air Movers/Fans": "设备特点:大风量、低噪音,可快速吹干地面、墙面水渍\n租赁价格:30元/天,5台以上团购享8折优惠",
    "Dehumidifers": "设备特点:日除湿量可达50L,适用于100平以内空间除湿\n租赁价格:120元/天,周租享85折优惠",
    "Air Filtration": "设备特点:三层过滤,可去除空气中的粉尘、异味和有害微生物\n租赁价格:90元/天,搭配除湿设备租赁立减20元/天",
    "Generators": "设备特点:额定功率5kW,噪音低、续航久,适合户外无供电场景使用\n租赁价格:200元/天,含基础燃油费"
}

# 打开子窗口的函数,接收品类名称作为参数
def open_category_window(category):
    # 创建子窗口
    new_window = Toplevel(main_window)
    new_window.title(f"{category}租赁详情")
    # 子窗口标题
    title_label = Label(new_window, text=category, font=("微软雅黑", 16, "bold"))
    title_label.pack(pady=10)
    # 子窗口正文内容,从提前配置的字典里取对应品类的说明
    desc_label = Label(new_window, text=category_desc[category], justify=LEFT)
    desc_label.pack(padx=20, pady=10)
    # 生成订单用的复选框
    check_btn = Checkbutton(new_window, text="确认选择该设备,加入订单")
    check_btn.pack(pady=10)
    # 还可以按需加租赁天数输入框、提交订单按钮等其他组件

# 主窗口标题
main_title = Label(main_window, text="4 Dry Out e-Rental 设备租赁系统", font=("微软雅黑", 18, "bold"))
main_title.pack(pady=20)

# 创建5个品类按钮,每个按钮绑定对应的品类参数
btn1 = Button(main_window, text="Extractors/Cleaners", width=30, command=lambda: open_category_window("Extractors/Cleaners"))
btn1.pack(pady=5)
btn2 = Button(main_window, text="Air Movers/Fans", width=30, command=lambda: open_category_window("Air Movers/Fans"))
btn2.pack(pady=5)
btn3 = Button(main_window, text="Dehumidifers", width=30, command=lambda: open_category_window("Dehumidifers"))
btn3.pack(pady=5)
btn4 = Button(main_window, text="Air Filtration", width=30, command=lambda: open_category_window("Air Filtration"))
btn4.pack(pady=5)
btn5 = Button(main_window, text="Generators", width=30, command=lambda: open_category_window("Generators"))
btn5.pack(pady=5)

# 仅保留一个主窗口的事件循环即可
main_window.mainloop()

扩展说明

如果需要调整某个品类的内容,直接修改category_desc字典里对应的文本即可;如果需要给子窗口加更多功能,比如提交订单按钮、输入租赁天数的输入框,直接在open_category_window函数里新增对应组件即可。


内容的提问来源于stack exchange,提问作者Lady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:15:03