【问题标题】:Tkinter - How can I extend a label widget? [closed]Tkinter - 如何扩展标签小部件? [关闭]
【发布时间】:2020-10-06 20:52:57
【问题描述】:

在图片下方。默认情况下,标签小部件在每一侧放置 3 个空白像素用于填充。我的问题是,我怎样才能在正确的大小上扩展这个填充?

在我的真实代码中,标签的内容可以改变,所以这种填充,例如 5 像素,对于每种标签必须是相同的。

这是一个示例程序:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("400x300")

Frame1=Frame(root, background="#ffffff")
Frame1.place(x=16, y=16, width=200, height=150)

Canvas(Frame1, height=1, background="#a0a0a0", highlightthickness=0, highlightbackground="white").grid(row=0, column=0, columnspan=1, sticky="ew")

TestLabel=ttk.Label(Frame1, text="Ciaoooo", background="green", justify="left")
TestLabel.grid(row=0,column=0, sticky="w", padx=(20,20)) # the padding is trasparent! I want it with the same color of the label (green).

root.mainloop()

【问题讨论】:

  • 如果你想要像素完美的测量,然后把它放在一个面板中并设置它的大小。或者只是不使用 Tkinter 而是使用 C# Winforms
  • 请出示minimal reproducible example,说明您是如何创建图像的。另外,请展示您已经尝试过的内容。标签小部件记录了填充选项,命令gridpack 也是如此。
  • @Bryan Oakley: ciao Bryan,它只是 ttk 模块中的一个标签小部件。从我的角度来看,没有必要举一个例子,或者至少现在还没有。我已经尝试为网格几何管理器使用“padx=(0, 5)”选项,但是这个填充是不可见的(它是透明的)。我想要一个与标签背景颜色相同的填充。有可能吗?如果我的问题很简单,请给我答案。我已经在网上搜索过,不幸的是我不是设计专家..
  • 如果没有minimal reproducible example,我们无法知道它是一个 ttk 标签。代码比代码描述有用得多。
  • @Bryan Oakley:我写了一个例子。正如我已经告诉过你的,填充是透明的,对我不利。

标签: python tkinter label


【解决方案1】:

仅在 ttk 标签的一侧添加填充的正确方法是创建从默认样式派生的新样式。在新样式中,padding 选项采用最多四个值的列表,分别表示左、上、右和下边缘。将 5 的值设置为右侧将为您提供所需的外观。

例如,要创建和使用名为“rpad.TLabel”的新样式,仅在右侧填充 5 个像素,它看起来像这样:

style = ttk.Style()
style.configure("rpad.TLabel", padding=(0,0,5,0))
...
TestLabel=ttk.Label(Frame1, style="rpad.TLabel", ...)

tkdocs.com 网站有一些关于样式引擎如何工作的文档。

【讨论】:

  • 即使我的问题因为不明原因被关闭了,你及时给了我正确的问题!谢谢你,布雷扬!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 2017-11-12
  • 2011-03-29
  • 2020-06-04
  • 1970-01-01
相关资源
最近更新 更多