我正在使用ttk.Optionmenu()
在我的 GUI 中,但我很恼火的是,当没有鼠标悬停条件时,菜单/按钮没有任何显示其边框的视觉效果。它没有给我任何 element_options 来查看我是否可以更改此小部件的特定样式。
如果有一种方法可以让按钮始终看起来像一个按钮,而不是仅在获得焦点时...否则它看起来有点废话。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
var = tk.StringVar(root)
opmenu = ttk.OptionMenu(root, var, 'One', 'Two', 'Three')
opmenu.pack()
root.mainloop()
我知道如何更改 style
对于小部件,但没有一个解决其静态外观。我尝试过“谷歌搜索”,希望找到解决方案,但无济于事。
使用Python 3.5.2和tkinter 8.6
最佳答案
更新:
经过一番挖掘,您似乎可以强制从 Windows 中声明样式。它看起来不太好,但我认为您可以在使用 theme_use('clam')
看一下这个例子:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
var1 = tk.StringVar()
var1.set("One")
s = ttk.Style(root)
s.theme_use('clam')
s.configure('raised.TMenubutton', borderwidth=1)
opmenu = ttk.OptionMenu(root, var1, "One", "One", "Two", "Three",
style = 'raised.TMenubutton')
opmenu.pack()
root.mainloop()
为了回应您关于使用带有弹出菜单的按钮的评论,您可以执行以下操作:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
popup = tk.Menu(root, tearoff=0)
popup.add_command(label="One", command= lambda: update_btn("One"))
popup.add_command(label="Two", command= lambda: update_btn("Two"))
popup.add_command(label="Three", command= lambda: update_btn("Three"))
btn = ttk.Button(root, text="One")
btn.pack()
def update_btn(x):
btn.config(text=x)
def btn_popup(event):
try:
popup.tk_popup(event.x_root, event.y_root, 0)
finally:
popup.grab_release()
btn.bind("<Button-1>", btn_popup)
root.mainloop()
关于python - ttk.OptionMenu 没有轮廓/边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795018/