首页 > 解决方案 > 将标签添加到 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 个像素。我计划为添加数百个这样的按钮创建一种方便的方法,并且不希望尝试计算父坐标中的每个标签。此外,作为按钮的子子项,它成为按钮层次结构的一部分,即随按钮移动,随按钮隐藏等。

标签: pythontkinterbuttonlabel

解决方案


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

结果:

结果截图

您可以使用anchorjustify选项更改文本在 上的位置Label

button_1 = tk.Button(canvas, text='Take\nStream 1', command='take', width='12',
                     anchor='w', justify='left')
button_1.pack()

结果 2:

第二个结果的屏幕截图


推荐阅读