簡體   English   中英

帶標簽的 Python Tkinter TTK 分隔符

[英]Python Tkinter TTK Separator With Label

我正在嘗試創建一個自定義小部件,其中在標簽后面包含一個分隔符。 我希望分隔符在標簽后面延伸到窗口的每一側(使用網格)。 我試圖自己創建這個,但我無法讓分隔符粘在邊緣。

import tkinter as tk
from tkinter import ttk

class LabelSeparator (tk.Frame):
    def __init__ (self, parent, text = "", width = "", *args):
        tk.Frame.__init__ (self, parent, *args)

        self.separator = ttk.Separator (self, orient = tk.HORIZONTAL)
        self.separator.grid (row = 0, column = 0, sticky = "ew")

        self.label = ttk.Label (self, text = text)
        self.label.grid (row = 0, column = 0, padx = width)

if __name__ == "__main__":
    root = tk.Tk ()
    root.geometry ("200x40")

    label = LabelSeparator (root, text = "Label", width = 15)
    label.grid (sticky = "ew")

    label2 = LabelSeparator (root, text = "A Second Label", width = 15)
    label2.grid (sticky = "ew")

    root.mainloop ()

帶標簽的分隔符

我發現擴展分隔符的唯一方法是增加標簽上的 padx,但這並不能真正解決問題。

我應該提一下,我對創建自定義小部件非常陌生。

您的代碼的唯一問題是您沒有調用grid_columnconfigure來告訴grid_columnconfigure如何處理額外空間。 由於您沒有告訴內部框架如何處理額外空間,因此將其留空。 當小部件放置在其父級中並展開時,您的內部小部件沒有使用額外的空間。

在您的__init__添加以下內容:

self.grid_columnconfigure(0, weight=1)

作為一般經驗法則,您總是希望在使用網格管理其子項的父項中設置至少一行和一列的權重。

暫無
暫無

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

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