【发布时间】:2017-11-07 13:13:20
【问题描述】:
为了练习,我正在使用 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(所有其他小部件的行为都与我预期的一样)。
按钮仅显示图标,但未说明文本“列表和概览字体”。我的问题:
为什么在使用图像时文本从按钮中消失了?
Tkinter 能否在 Buttons 中显示一个图标以及文本或文本旁边(如上面的模型 GUI 中)?
Tkinter 的“工具栏”或小部件是否能够与文本一起显示图标,或者我是否只能选择纯文本按钮和纯图像按钮?
我尝试过使用 Menubutton 并测试过其他来源的代码,但无济于事。将不胜感激。
【问题讨论】:
标签: python button tkinter toolbar