如何在tkinter中配置撕纸菜单

时间:2018-11-04 11:09:50

标签: python tkinter menu

我正在使用Python。 当我想在tkinter中创建无边界菜单时,我的问题就开始了。经过一些研究,基本上不可能消除Windows菜单周围的那些浅灰色边框。

但是我注意到撕纸菜单没有边框,因为它们是浮动窗口。 因此,我想知道如何“替代”或仅显示这些浮动菜单而不是传统菜单。 这是我的起始代码段。

from tkinter import *
import tkinter as tk
import ttk 

w = tk.Tk()

list = ['1','2','3','4','5']
var = StringVar(w)
otpionmenu1 = ttk.OptionMenu(w, var, list[0], *list)
otpionmenu1.place(relx=0.5, rely=0.5)

w.mainloop()

这基本上是起始代码(并且显示了那些难看的粗边框 Standard OptionMenu

w.option_add("*TMenubutton*Menu*Type", 'tearoff')

我可以用这种Standard OptionMenu的方式来撕下菜单(我想还不错,它们在各自的按钮下生成)。

但是现在有一个问题。如您所见,菜单现在显示为窗口。我要配置它。我想知道如何将其修改为窗口(添加一些事件,使其无法调整大小等)。我能怎么做? 请注意,该窗口的标题为“!菜单”。

谢谢。

  

menu.config()给出:

('selectcolor', 'selectColor', 'Background', <color object: '#000000'>, <color object: '#000000'>)
('borderwidth', 'borderWidth', 'BorderWidth', <pixel object: '1'>, <pixel object: '1'>)
('activeforeground', 'activeForeground', 'Background', <color object: '#000000'>, <color object: '#000000'>)
('fg', '-foreground')
('type', 'type', 'Type', <index object: 'normal'>, <index object: 'normal'>)
('background', 'background', 'Background', <border object: '#d9d9d9'>, <border object: '#d9d9d9'>)
('foreground', 'foreground', 'Foreground', <color object: '#000000'>, <color object: '#000000'>)
('disabledforeground', 'disabledForeground', 'DisabledForeground', <color object: '#a3a3a3'>, <color object: '#a3a3a3'>)
('title', 'title', 'Title', '', '')
('takefocus', 'takeFocus', 'TakeFocus', '0', '0')
('bd', '-borderwidth')
('font', 'font', 'Font', <font object: 'TkMenuFont'>, <font object: 'TkMenuFont'>)
('activebackground', 'activeBackground', 'Foreground', <border object: '#ececec'>, <border object: '#ececec'>)
('bg', '-background')
('relief', 'relief', 'Relief', <index object: 'raised'>, <index object: 'raised'>)
('tearoff', 'tearOff', 'TearOff', 1, 0)
('cursor', 'cursor', 'Cursor', <cursor object: 'arrow'>, <cursor object: 'arrow'>)
('tearoffcommand', 'tearOffCommand', 'TearOffCommand', '', '')
('activeborderwidth', 'activeBorderWidth', 'BorderWidth', <pixel object: '1'>, <pixel object: '1'>)
('postcommand', 'postCommand', 'Command', '', '')

0 个答案:

没有答案