import ttkbootstrap as ttk import os import tkinter as tk from tkhtmlview import HTMLLabel # from tkinterweb import HtmlFrame def on_menu_item_click(label): if label == "Item 1": display_html_file("data/1.html") elif label == "Item 2": display_html_file("data/2.html") elif label == "Sub Item 1": display_text_and_entries() elif label == "about": display_html_file("data/about.html") else: print(f"Clicked on {label}") def display_html_file(filepath): # 清空当前窗口内容,但保留菜单栏 for widget in window.winfo_children(): if not isinstance(widget, ttk.Menu): widget.destroy() if os.path.exists(filepath): with open(filepath, 'r', encoding='utf-8') as file: html_content = file.read() # 创建 HTMLLabel 来显示 HTML 内容 global html_label html_label = HTMLLabel(window, html=html_content,wrap=ttk.CHAR) # tkinterweb # html_label = HtmlFrame(window) # # html_label.load_file("C:\\Users\\wang\\PycharmProjects\\PythonProject\\data\\1.html") # html_label.add_html(html_content) #html_label.load_html(html_content,base_url="C:\\Users\\wang\\PycharmProjects\\PythonProject\\data") html_label.pack(side=ttk.TOP, fill=ttk.BOTH, expand=True) html_label.fit_height() else: # 创建文本区域用于显示错误信息 global text_area text_area = ttk.Text(window, wrap=ttk.WORD, font=('Arial', 12)) text_area.pack(side=ttk.TOP, fill=ttk.BOTH, expand=True) text_area.insert(ttk.END, f"File {filepath} not found.") def display_text_and_entries(): # 清空当前窗口内容,但保留菜单栏 for widget in window.winfo_children(): if not isinstance(widget, ttk.Menu): widget.destroy() global entry_list entry_list = [] global label_list label_list = [] # 创建10行界面 for i in range(1, 11): frame = ttk.Frame(window) frame.pack(pady=5, fill=ttk.X) title_label = ttk.Label(frame, text=f"Title {i}", font=('Arial', 12)) title_label.pack(side=ttk.LEFT, padx=5) entry = ttk.Entry(frame, font=('Arial', 12), width=20) entry.pack(side=ttk.LEFT, padx=5) entry_list.append(entry) # 添加一个新的Label来显示内容 label = ttk.Label(frame, text=f"text {i}", font=('Arial', 12)) label.pack(side=ttk.LEFT, padx=5) label_list.append(label) # 创建按钮 fill_button = ttk.Button(window, text="Fill All with Hello", command=fill_entries_with_hello) fill_button.pack(pady=10) def fill_entries_with_hello(): for entry in entry_list: entry.delete(0, ttk.END) entry.insert(0, "Hello") def display_text_area(): # 清空当前窗口内容,但保留菜单栏 for widget in window.winfo_children(): if not isinstance(widget, ttk.Menu): widget.destroy() global text_area text_area = ttk.Text(window, wrap=ttk.WORD, font=('Arial', 12)) text_area.pack(side=ttk.TOP, fill=ttk.BOTH, expand=True) # 创建窗口并设置主题为 'flatly' window = ttk.Window(themename='flatly') # 设置窗口大小为 2000x1200 window.geometry("2000x1200") # 初始显示 text_area display_text_area() # 创建菜单栏 menu_bar = ttk.Menu(window) # 创建第一个菜单及其子菜单 first_menu = ttk.Menu(menu_bar, tearoff=0) for i in range(1, 11): menu_label = f"Item {i}" first_menu.add_command(label=menu_label, command=lambda label=menu_label: on_menu_item_click(label)) menu_bar.add_cascade(label="Menu 1", menu=first_menu) # 创建第二个菜单及其子菜单 second_menu = ttk.Menu(menu_bar, tearoff=0) second_menu.add_command(label="Sub Item 1", command=lambda: on_menu_item_click("Sub Item 1")) second_menu.add_command(label="Sub Item 2", command=lambda: on_menu_item_click("Sub Item 2")) menu_bar.add_cascade(label="Menu 2", menu=second_menu) # 创建第三个菜单及其子菜单 third_menu = ttk.Menu(menu_bar, tearoff=0) third_menu.add_command(label="关于本软件", command=lambda: on_menu_item_click("about")) #third_menu.add_command(label="Sub Item 2", command=lambda: on_menu_item_click("Sub Item 2")) menu_bar.add_cascade(label="关于", menu=third_menu) # 设置窗口的菜单栏 window.config(menu=menu_bar) # 运行窗口主循环 window.mainloop()