[英]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.