簡體   English   中英

為什么左框比右框小? - 網格布局

[英]Why the left frame is smaller than the right one? - grid layout

我是網格布局的新手(使用多年)。
我想創建一個 window,上半部分有兩個框架,下半部分有一個框架。

這是我的 Class 代碼:

import customtkinter as ctk


class SettingsWindow(ctk.CTk):
    def __init__(self):
        super().__init__()

        self.title('Einstellungen')
        self.geometry('1000x750+10+10')
        self.grid_rowconfigure(0, weight=1)
        self.grid_rowconfigure(1, weight=1)
        self.grid_columnconfigure(0, weight=1)
        self.grid_columnconfigure(1, weight=1)

        self.frame_settings = ctk.CTkFrame(self, border_width=1, border_color='black')
        self.frame_settings.grid(row=0, column=0, sticky='nesw', padx=(5, 5), pady=(5, 5))
        self.frame_settings.grid_columnconfigure(0, weight=1)

        self.label_settings = ctk.CTkLabel(self.frame_settings, bg_color='lightgrey', text='Einstellungen')
        self.label_settings.grid(row=0, column=0, columnspan=2, padx=(5, 5), pady=(5, 5))

        self.frame_database_settings = ctk.CTkFrame(self, border_width=1, border_color='black')
        self.frame_database_settings.grid(row=0, column=1, sticky='nesw', padx=(5, 5), pady=(5, 5))
        self.frame_database_settings.grid_columnconfigure(0, weight=1)

        self.label_database_settings = ctk.CTkLabel(self.frame_database_settings, bg_color='lightgrey',
                                                    text='Datenbank-Einstellungen')
        self.label_database_settings.grid(row=0, column=0, columnspan=2, padx=(5, 5), pady=(5, 5))

        self.frame_rules = ctk.CTkFrame(self, border_width=1, border_color='black')
        self.frame_rules.grid(row=1, column=0, columnspan=2, sticky='nesw', padx=(5, 5), pady=(5, 5))
        self.frame_rules.grid_columnconfigure(0, weight=1)

        self.label_rules = ctk.CTkLabel(self.frame_rules, text='Regeln')
        self.label_rules.grid(row=0, column=0, columnspan=2, pady=(5, 5))


SettingsWindow().mainloop()

當我運行它時,左上框架比右框架小,但我希望左右框架的寬度相同。
我該怎么做

如果您正在使用grid並希望列的大小與其權重成正比,請將兩列的uniform屬性設置為相同的值。 值是什么並不重要,所有具有相同值的列都將根據它們的權重統一調整大小。

如果不使用uniform設置,那么每列開始時都會盡可能小,然后根據它們的權重分配任何額外的空間。

這意味着,在這種特定情況下,右列最初會更寬,因為 label 比左列寬。 然后,由於 weight 參數,額外的空間被平均添加到每一列。 因為右框架開始時更寬,然后獲得與左框架相同的額外空間,所以它仍然更寬。

self.grid_columnconfigure(0, weight=1, uniform=1)
self.grid_columnconfigure(1, weight=1, uniform=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM