gpt4 book ai didi

带标签的 Python Tkinter TTK 分隔符

转载 作者:太空狗 更新时间:2023-10-30 01:27:34 25 4
gpt4 key购买 nike

我正在尝试创建一个自定义小部件,该小部件在标签后面包含一个分隔符。我希望分隔符在标签后面延伸到窗口的每一侧(使用网格)。我试着自己创建这个,但我无法让分隔符粘在边缘。

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 ()

Separator With Label

我发现扩展分隔符的唯一方法是增加标签上的 padx,但这并不能真正解决问题。

我应该提一下,我对创建自定义小部件非常陌生。

最佳答案

您的代码的唯一问题是您没有调用 grid_columnconfigure 来告诉 tkinter 如何处理额外的空间。因为你没有告诉内部框架如何处理额外的空间,所以它留空了。当小部件放置在其父级中并展开时,您的内部小部件不会使用额外空间。

在您的 __init__ 中添加以下内容:

self.grid_columnconfigure(0, weight=1)

作为一般经验法则,您总是希望在使用网格管理其子级的父级中设置至少一行和一列的权重。

关于带标签的 Python Tkinter TTK 分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38396900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com