对于练习,我使用Python的Tkinter来复制/重新创建"选项"另一个软件的GUI部分。这是我的模型GUI:
此时,我的编码如下:
import tkinter as tk
import tkinter.ttk as ttk
import random
from PIL import Image, ImageTk
class Options(tk.Frame):
def __init__(self, parent):
random_numbers = lambda: [random.random() for i in range(4)]
text_font_icon = r"D:\Dropbox\coding\python\experiments\6 - tkinter\icons\icon_mail.gif"
labelframe_general = tk.LabelFrame(parent, text="General")
labelframe_general.pack()
tk.Label(labelframe_general, text="Startup tab", justify=tk.LEFT).grid(column=0, row=0, sticky=tk.W)
ttk.OptionMenu(labelframe_general, tk.StringVar(), random_numbers()[0], *random_numbers()).grid(column=1, row=0)
tk.Label(labelframe_general, text="Episode display format", justify=tk.LEFT).grid(column=0, row=1, sticky=tk.W)
ttk.OptionMenu(labelframe_general, tk.StringVar(), random_numbers()[0], *random_numbers()).grid(column=1, row=1)
tk.Label(labelframe_general, text="Number of banner images to\ndownload per series", justify=tk.LEFT).grid(column=0, row=2, sticky=tk.W)
ttk.OptionMenu(labelframe_general, tk.StringVar(), random_numbers()[0], *random_numbers()).grid(column=1, row=2)
tk.Checkbutton(labelframe_general, text="Automatically scroll episode list to bottom", variable=tk.StringVar()).grid(column=0, row=3, columnspan=2, sticky=tk.W)
tk.Checkbutton(labelframe_general, text='Move "The" to the end of series name', variable=tk.StringVar()).grid(column=0, row=4, columnspan=2, sticky=tk.W)
tk.Checkbutton(labelframe_general, text="Close epCheck with the <Esc> key", variable=tk.StringVar()).grid(column=0, row=5, columnspan=2, sticky=tk.W)
_photo = tk.PhotoImage(file=text_font_icon)
b = ttk.Button(labelframe_general, text="List & Overview font (right-click for default", image=_photo)
b.image = _photo
b.grid(sticky=tk.NSEW, columnspan=2)
class Gui(tk.Tk):
def __init__(self):
super().__init__()
Options(self)
self.bind('<Escape>', lambda event: self.destroy())
gui = Gui()
gui.mainloop()[![enter image description here][2]][2]
以上产生了这个:
我的问题仅在于ttk.Button(所有其他小部件的行为与我期望的一样)。
按钮仅显示图标,但不显示文本&#34;列表&amp;概述字体&#34;。我的问题:
为什么在使用图像时文本会从按钮中消失?
Tkinter可以与按钮中的文本一起显示图标,也可以显示在旁边(如上面的模型GUI中所示)?
Tkinter&#39;工具栏&#39;或者小部件能够与文本一起显示图标,还是我只能选择纯文本按钮和仅图像按钮?
我已尝试使用Menubutton并测试其他来源的代码,但无济于事。很感激帮助。
答案 0 :(得分:2)
您需要为ttk.Button的compound
选项指定一个值。
如果同时提供图像和文本选项,则复合选项 指定图像相对于文本的位置。价值 可能是tk.TOP(图片上方文字),tk.BOTTOM(图片下方文字), tk.LEFT(文本左侧的图像),或tk.RIGHT(图像到 正确的文字)。
当您同时提供图片和文字选项但未指定时 复合选项,图片将显示,文字不会。