我有一个 Tkinter 框架,并排有 3 个按钮。我的目标是让左侧按钮比其他按钮宽 2 到 3 倍。我尝试了许多不同的网格配置,但没有任何效果,它们在全屏显示上保持不变。
调整大小后,情况会变得更糟,右侧的 2 个按钮保持相同的比例,而左侧的按钮则被水平挤压。我根本无法解释这种行为。有人可以告诉我如何解决这个谜语吗?
这是我尝试过的一种方法:
class FocusControlFrame(ctk.CTkFrame):
"""Mid-Right Control Frame for microscope controls"""
def __init__(self, master: ctk.CTk, tile_frame: TileFrame, api: AccuscopeAPI, **kwargs) -> None:
super().__init__(master, corner_radius=10, fg_color=CANVAS_COLOR_2, bg_color=CANVAS_COLOR_2, **kwargs)
self.api = api
self.tile_frame = tile_frame
self.auto_focus_btn = ctk.CTkButton(self, corner_radius=10, bg_color=CANVAS_COLOR_2, fg_color=CANVAS_COLOR_2, border_width=2,
border_color='#2EADE8', text="Auto Focus", font=("Arial", 18), text_color='#2EADE8')
self.fourx_btn = ctk.CTkButton(self, corner_radius=10, bg_color=CANVAS_COLOR_2, fg_color=CANVAS_COLOR_2,
border_color='#2EADE8', text="4X", font=("Arial", 18), text_color='#2EADE8', border_width=2,
command=lambda: self.change_objective('4x', 4))
self.twentyx_btn = ctk.CTkButton(self, corner_radius=10, bg_color=CANVAS_COLOR_2, fg_color=CANVAS_COLOR_2, border_width=2,
border_color='#2EADE8', text="40X", font=("Arial", 18), text_color='#2EADE8',
command=lambda: self.change_objective('20x', 20))
self.grid_columnconfigure(0, weight=10)
self.grid_columnconfigure(tuple(range(1, 3)), weight=1)
self.grid_rowconfigure(0, weight=1)
self.auto_focus_btn.grid(row=0, column=0, rowspan=1, columnspan=1, sticky="nsew", padx=5, pady=5)
self.fourx_btn.grid(row=0, column=1, rowspan=1, columnspan=1, sticky="nsew", padx=5, pady=5)
self.twentyx_btn.grid(row=0, column=2, rowspan=1, columnspan=1, sticky="nsew", padx=5, pady=5)
当第一个按钮跨越前 3 列时,我还尝试了 5 列网格。
请帮忙。
也许你可以使用“.place”方法。它允许您使用“宽度”和“高度”参数设置小部件的大小。