因此,我按照在线视频,尝试复制 UI,同时应用自己的更改来满足我的需求,但最终我得到的 UI 在每次更改主题时都会不断放大。
我尝试注释代码的某些部分,看看问题出在哪里,但无济于事,我对 Tkinter 很陌生,但在看到几个例子后我可以处理我的方式,但这个错误,我不能'不明白。
它看起来像这样: https://youtu.be/3K3HWjYSB5s
这是一个有效的代码片段:
import tkinter as tk
from tkinter import ttk
def toggle_mode():
if mode_switch.instate(["selected"]):
style.theme_use("forest-light")
else:
style.theme_use("forest-dark")
def select(event=None):
treeview.selection_toggle(treeview.focus())
print(treeview.selection())
root = tk.Tk()
root.title('Generator')
#root.geometry("1280x720")
style = ttk.Style(root)
root.tk.call("source", "Theme/forest-dark.tcl")
root.tk.call("source", "Theme/forest-light.tcl")
style.theme_use("forest-dark")
frame = ttk.Frame(root)
frame.pack(fill=tk.BOTH) #Expand the frame to fill the root window
widgets_frame = ttk.LabelFrame(frame, text="Title 2")
widgets_frame.grid(row=1, column=0, padx=20, pady=10)
mode_switch = ttk.Checkbutton(widgets_frame, text="Mode", style="Switch", command=toggle_mode)
mode_switch.grid(row=0, column=0, padx=5, pady=10, sticky="nsew")
separator = ttk.Separator(widgets_frame)
separator.grid(row=0, column=1, padx=(20, 0), pady=5, sticky="ew")
button = ttk.Button(widgets_frame, text="Generate")#, command=todo)
button.grid(row=0, column=2, padx=5, pady=5, sticky="nsew")
treeFrame = ttk.LabelFrame(frame, text="Title 1")
treeFrame.grid(row=0, column=0, pady=10, sticky="nsew")
treeScroll = ttk.Scrollbar(treeFrame)
treeScroll.pack(side="right", fill="y")
cols = ("1", "2", "3", "4")
treeview = ttk.Treeview(treeFrame, show=("headings"), selectmode="none", yscrollcommand=treeScroll.set, columns=cols, height=13)
treeview.bind("<ButtonRelease-1>", select)
treeview.column("1", width=100)
treeview.column("2", width=150)
treeview.column("3", width=300)
treeview.column("4", width=100)
treeview.pack()
treeview.pack_propagate(False)
treeScroll.config(command=treeview.yview)
#load_data()
root.mainloop()
每当主题更改时,树视图列的大小似乎都会更改。您可以通过将
stretch=0
添加到这些 treeview.column(...)
来禁用这些列的大小更改:
treeview.column("1", width=100, stretch=0)
treeview.column("2", width=150, stretch=0)
treeview.column("3", width=300, stretch=0)
treeview.column("4", width=100, stretch=0)