我有动态按钮标签,每次单击它都会更改。问题是,当按钮上的文本更改时,按钮的宽度也一样。因此,我为按钮设置了固定宽度。
此后,出现另一个问题。内容在按钮内居中,因此每个更改图像和标签上都会移动一点。因此,我尝试将所有内容都放置在左侧以减少内容颤抖。
我浏览了一下文档,发现按钮小部件支持定位选项来定位内容。但是,当我尝试时,出现错误:
_tkinter.TclError:未知选项“-锚”
我找到了另一种选择,证明,但结果是相同的:
_tkinter.TclError:未知选项“ -justify”
有人知道如何处理吗?我将与您分享我的代码:
self.btnServiceIo = ttk.Button(
top_buttons_frame,
text="Usługa automatyczna",
image=self.ioBtnImg_off,
compound=tk.LEFT,
width=30,
justify=tk.LEFT,
anchor='w')
self.btnServiceIo.pack(side=tk.LEFT)
self.btnServiceIo.bind("<ButtonRelease>", self.IObuttonToggle)
(我不同时使用justify和anchor,我只是将它们发布在一起以向您展示我的使用方式) 我将发布我的应用图片,以引起您的注意。我的客户不仅希望切换显示某些服务状态的图像,还希望获取附近的文本信息。
答案 0 :(得分:1)
对于ttk按钮,您可以设置ttk样式的锚点选项,请参见anchor entry on this page。
例如:
import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk
root = tk.Tk()
s = ttk.Style()
s.configure('TButton', anchor=tk.W)
buttonImage = Image.open('test.png')
buttonPhoto = ImageTk.PhotoImage(buttonImage)
btnServiceIo = ttk.Button(
root,
text="Usługa automatyczna",
image=buttonPhoto,
compound=tk.LEFT,
width=30)
btnServiceIo.pack(side=tk.LEFT)
root.mainloop()
答案 1 :(得分:0)
来自@fhdrsdg的答案几乎是完美的,但是它使我的一些简单按钮(仅以文本为中心)弄乱了。我必须为按钮制作专用的样式,如下所示:
# Access ttk style object
s = ttk.Style()
# Set dedicated style for button, derived from main button class
s.configure('service-io.TButton', anchor=tk.W)
self.ioBtnImg_off = tk.PhotoImage(file='../img/io.png')
self.ioBtnImg_on = tk.PhotoImage(file='../img/io_on.png')
self.btnServiceIo = ttk.Button(
top_buttons_frame,
text="Usługa automatyczna",
image=self.ioBtnImg_off,
compound=tk.LEFT,
width=30,
style='service-io.TButton' # use dedicated style
)