去掉选项菜单周围的白色边框 [英] get rid of white border around option menu
问题描述
我正在尝试去除 OptionMenu
周围的白色边框.
I'm trying to get rid of the white border around the OptionMenu
.
我把颜色改成了红色,但周围还是有白边.
I changed the colour to red, but there is still a white border around it.
有人可以帮忙吗?
from tkinter import *
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('500x500')
var = StringVar()
option = ttk.OptionMenu(root,var,'1','2','3')
option["menu"].config(bg="red")
option.pack()
root.mainloop()
另外,有没有办法改变OptionMenu
触发框(在红色圆圈中)的颜色?
Also, is there a way to change the colour of the OptionMenu
trigger box (In the red Circle)?
推荐答案
如@Mike-SMT 的评论中所述,
As stated in the comments by @Mike-SMT,
您是否考虑过编写自己的选项菜单?
Have you considered writing your own option menu?
对我来说,这似乎是获得 OptionMenu
而没有令人讨厌的灰色边框的唯一方法.
This, to me, seems to be the only way to get an OptionMenu
without having that irritating grey border.
这是我的尝试:
import tkinter as tk
root = tk.Tk()
root.geometry('500x500')
class custom_option_menu(tk.Tk):
def down(self, *menu_items):
if self.button["text"] == "↓":
self.frame.place(x = self.x + (len(self.first) * 13)/2, y = self.y + 50, anchor = "center")
self.button.config(text = "↑")
elif self.button["text"] == "↑":
self.frame.place_forget()
self.button.config(text = "↓")
def __init__(self, master, first, bg, *menu_items):
self.master = master
self.first = first
self.menu_items = menu_items
self.bg = bg
self.frame = tk.Frame(master, height = 100, width = 100)
self.otherframe = tk.Frame(master, height = 10, width = len(first) * 13)
self.label = tk.Label(self.otherframe, text = str(first))
self.button = tk.Button(self.otherframe, text = "↓", command = lambda: self.down(), relief= "flat")
def save_var(event = "<Button-1>"):
print(event.widget["text"])
for i in range(len(self.menu_items)):
self.frame.config(bg = self.bg)
self.option = tk.Button(self.frame, text = self.menu_items[i], relief = "flat", bg = self.bg, textvariable = int(i))
self.option.pack()
self.option.bind("<Button-1>", save_var)
def put(self, x, y):
self.x = x
self.y = y
self.button.pack(side = "right")
self.label.pack()
self.frame.place(x = x + (len(self.first) * 13)/2, y = y + 50, anchor = "center")
self.frame.place_forget()
self.otherframe.place(x = x + (len(self.first) * 13)/2, y = y, anchor = "center")
nice = custom_option_menu(root, "o000000000000000", "blue", "First", "second", "Third")
nice.put(100, 200)
root.mainloop()
遗憾的是,我无法让默认几何管理器为此工作,所以我创建了 .put()
.这只是 x 和 y 坐标.
Sadly I couldn't get the default geometry managers to work for this, so I created .put()
. It's just the x and y coordinates.
custom_option_menu
类的参数如下:
OptionMenu
上的文本.OptionMenu
. 要打开菜单,请单击向下箭头.
To open the menu, click the down arrow.
希望这就是您要找的!
这篇关于去掉选项菜单周围的白色边框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!