如何在Tkinter框架中获得不对称按钮

问题描述 投票:0回答:1

我有一个 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 列网格。

在每种情况下,结果如下所示:enter image description here

调整窗口大小时,结果是:enter image description here

请帮忙。

python tkinter button customtkinter tkinter-layout
1个回答
0
投票

也许你可以使用“.place”方法。它允许您使用“宽度”和“高度”参数设置小部件的大小。

© www.soinside.com 2019 - 2024. All rights reserved.