python - 将标签添加到 Tkinter 按钮
问题描述
我正在尝试向 Tkinter 按钮添加标签。Tkinter 按钮有一个很棒的“文本”属性。但是,我需要在按钮上使用另一个类似的文本字段,即每个按钮 2 个文本字段。所以我想为按钮添加一个标签作为子项。这样做的问题是它会产生不可预测的行为。按下按钮甚至只是将鼠标悬停在标签上都会导致标签消失。
button_1 = tk.Button(canvas, text='Take',command='take',width='12')
button_1.pack()
label_1 = tk.Label(button_1, text='Stream 1',font=('calibre',8))
label_1.pack()
label_1.place(x=10, y=10)
我可以通过将标签添加到与按钮相同的父级来避免这种不需要的行为。
label_1 = tk.Label(canvas, text='Stream 1',font=('calibre',8))
但是通过这样做,我失去了用按钮的几何形状定位标签的便利性,例如从左侧插入 10 个像素,从按钮顶部插入 10 个像素。我计划为添加数百个这样的按钮创建一种方便的方法,并且不希望尝试计算父坐标中的每个标签。此外,作为按钮的子子项,它成为按钮层次结构的一部分,即随按钮移动,随按钮隐藏等。
解决方案
Button
您可以通过在文本中嵌入换行符来显示多行文本。
像这样:
import tkinter as tk
root = tk.Tk()
root.geometry('100x100')
canvas = tk.Canvas(root)
canvas.pack()
button_1 = tk.Button(canvas, text='Take\nStream 1',command='take',width='12')
button_1.pack()
#label_1 = tk.Label(button_1, text='Stream 1',font=('calibre',8))
#label_1.pack()
#label_1.place(x=10, y=10)
root.mainloop()
结果:
您可以使用anchor
和justify
选项更改文本在 上的位置Label
:
button_1 = tk.Button(canvas, text='Take\nStream 1', command='take', width='12',
anchor='w', justify='left')
button_1.pack()
结果 2:
推荐阅读
- python - “int”类型的参数是不可迭代的问题
- javascript - 使用 Google App Script 替换 Google Sheet 中的文本而不重新格式化值
- linux - 在 Spark 中运行多个作业
- java - 生成一个 jar 并将其用作另一个模块中的依赖项
- elasticsearch - 从 ES 2.1 到 ES 7.2 的转储映射
- javascript - jQuery 数据属性改变和影响 CSS
- xpath - XPath 兄弟返回空
- linux - 在 Linux 上使用 Schwab StreetSmart Edge Cloud - Citrix 错误
- c++ - 无法将右值引用函数与 GCC 匹配
- linux - 如何从 key=value 格式的文件中仅获取选定的行?