練習時,我使用Python的Tkinter來複制/重新創建另一個軟件GUI的「選項」部分。這是我的模型GUI:Python的Tkinter能夠在Button小部件中顯示文本和圖像嗎?
在這個時候,我已經編碼如下:
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(所有其他小部件都按照我預期的那樣行事)。
該按鈕僅顯示圖標,但未指定文本「List & Overview font」。我的問題:
爲什麼使用圖像時文本從按鈕消失?
Can Tkinter可以在按鈕中顯示與圖標一起或在旁邊的圖標(就像上面的模型GUI一樣)?
Tkinter的'工具欄'或小部件能夠顯示與文本一起的圖標,還是我約束選擇純文字按鈕和僅限圖像按鈕?
我已經嘗試過使用Menubutton並測試其他來源的代碼,但無濟於事。將不勝感激的幫助。
謝謝!有效。另外:1)有沒有辦法從文本中「填充」圖像,以便它們之間有一定的空間?和2)你可以文本對齊/對齊圖像/文本_內的按鈕部件? – anonnoir
@anonnoir據我所知,不,你不能做任何這些。只有添加填充的選項是添加了額外的空格,但由於字體等原因可能不可靠。 – Lafexlos