python - ttk.OptionMenu 没有轮廓/边框

标签 python tkinter

我正在使用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/

相关文章:

python - 如何修复函数tkinter的int float

python - 即使我使用 destroy/pack_forget,Tkinter Widget 也不会消失

python - Tkinter 按钮的突出显示对我不起作用

python - Python 中的计算器不会更新为 "Entry"。这是一个 GUI 计算器

Python:算法

python 多个列表中的最小范围

Python:通用 XPATH 上的 Selenium、NoSuchElementException

python - "No space left on device"拟合 Sklearn 模型时出错

Windows 上的 python libclang 绑定(bind)无法从 sublime text 初始化翻译单元

python - 如何将 .get() 函数与单选按钮一起使用