【问题标题】:How do I give tkinter labels equal dimensions?如何给 tkinter 标签相同的尺寸?
【发布时间】:2018-09-22 01:16:51
【问题描述】:

标签目前是并排的,这正是我想要的。但是每个标签的宽度是不同的。有没有办法让每个标签都有相同的宽度?

还有没有一种方法可以让标签具有相同的测量值并同时填充到 250?

这是我当前的代码:

from tkinter import *

root = Tk()
root.geometry("250x50")
w = Label(root, text="Label UNO", bg="red", fg="white")
w.pack(side=LEFT)
w = Label(root, text="Label2", bg="green", fg="black")
w.pack(side=LEFT)
w = Label(root, text="Label DREI", bg="blue", fg="white")
w.pack(side=LEFT)

root.mainloop()

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    您应该尝试检查 tkinter 在包装上的 documentation

    检查这是否是您要查找的内容:

    root = Tk()
    root.geometry("250x50")
    w = Label(root, text="Label UNO", bg="red", fg="white")
    w.pack(side=LEFT, fill=BOTH, expand=True)
    w = Label(root, text="Label2", bg="green", fg="black")
    w.pack(side=LEFT, fill=BOTH, expand=True)
    w = Label(root, text="Label DREI", bg="blue", fg="white")
    w.pack(side=LEFT, fill=BOTH, expand=True)
    root.mainloop()
    

    Fill 参数基本上是填充父容器。

    扩展参数将用于额外的剩余空间。

    还请务必查看 tkinter 权重,here 就是一个示例。

    【讨论】:

      【解决方案2】:

      您可以将关键字参数widthheighttk.Label 一起使用

      import tkinter as tk
      
      if __name__ == '__main__':
      
          root = tk.Tk()
          root.geometry("250x50")
      
          label_frame = tk.Frame(root)
      
          w = tk.Label(label_frame, text="Label UNO", bg="red", fg="white", width=8, height=2)
          w.pack(side=tk.LEFT)
          w = tk.Label(label_frame, text="Label2", bg="green", fg="black", width=8, height=2)
          w.pack(side=tk.LEFT)
          w = tk.Label(label_frame, text="Label DREI", bg="blue", fg="white", width=8, height=2)
          w.pack(side=tk.LEFT)
      
          label_frame.pack(expand=True)
      
          root.mainloop()
      

      注意事项:

      • tkinter is imported as tk 以保持命名空间整洁。

      • tk.Labels 包含在 tk.Frame 中,因此一旦构建完成, 您不必担心,直到您将框架装入您的 图形用户界面。

      • 当标签时,宽度和高度的单位是“文本单位” 包含文本。

      【讨论】:

        【解决方案3】:

        要使标签宽度相同,只需将width 选项添加到label

        例如width=10 这将指定多少空间,以字符宽度为单位。

        如果您想对多标签应用相同的宽度,请将宽度值存储在变量中,比如label_w = 10

        所以您的代码可能如下所示:

        from tkinter import *
        
        root = Tk()
        root.geometry("250x50")
        label_w = 10
        w = Label(root, text="Label UNO", bg="red", fg="white", width=label_w)
        w.pack(side=LEFT)
        w = Label(root, text="Label2", bg="green", fg="black", width=label_w)
        w.pack(side=LEFT)
        w = Label(root, text="Label DREI", bg="blue", fg="white", width=label_w)
        w.pack(side=LEFT)
        
        root.mainloop()
        

        同时填充到 250

        这取决于您将创建多少个标签,假设window_width = 250labels_all = 3 然后width 选项将是width = window_width/labels_all 另外,如果你不写 geometry 值,窗口大小会自动适应标签。

        如果您的窗口足够简单,您可以考虑使用 Packer Option expandexpand=1 一样,如果您的标签有颜色,还包括 fill 选项,填写 Legal 值: “x”、“y”、“两者”、“无”。

        更多信息,请查看label-optionspacker-options

        【讨论】:

          猜你喜欢
          • 2020-08-15
          • 2013-06-03
          • 1970-01-01
          • 1970-01-01
          • 2018-01-27
          • 2021-11-12
          • 1970-01-01
          • 2012-03-15
          • 2020-12-26
          相关资源
          最近更新 更多