去掉选项菜单周围的白色边框 [英] get rid of white border around option menu

查看:29
本文介绍了去掉选项菜单周围的白色边框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试去除 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 上的文本.
  • The second argument is the text on the OptionMenu.
  • 第三个参数是选项的背景颜色.
  • 剩下的参数是选项.
  • 要打开菜单,请单击向下箭头.

    To open the menu, click the down arrow.

    希望这就是您要找的!

    这篇关于去掉选项菜单周围的白色边框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆