马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
frame = Frame(root,width = 512,height = 512)
frame.pack()
frame.bind("<Button-3>",popup)
menu = Menu(root,tearoff = False)
menu.add_command(label = "撤销",command = callback)
menu.add_command(label = "重做",command = callback)
这段代码可以实现在界面内单击鼠标右键弹开一个包含有“撤销”和“重做”的菜单
但是,我想在这个可以右键弹菜单的frame组件上再加上别的组件比如Button和Menubutton什么的为什么就不行了,加了这些组件的话右键它就不弹菜单了是为什么?
就连frame组件的大小都变了??
像这样:from tkinter import *
root = Tk()
def popup(event):
menu.post(event.x_root,event.y_root)
def callback():
print("ok!")
menubar = Menu(root)
first = Menu(menubar,tearoff = False)
first.add_command(label = "one",command = callback)
first.add_command(label = "two",command = callback)
menubar.add_cascade(label = "first",menu = first)
second = Menu(menubar,tearoff = False)
second.add_command(label = "one",command = callback)
second.add_command(label = "two",command = callback)
menubar.add_cascade(label = "second",menu = second)
root.config(menu = menubar)
frame = Frame(root,width = 512,height = 512)
frame.pack()
frame.bind("<Button-3>",popup)
menu = Menu(root,tearoff = False)
menu.add_command(label = "撤销",command = callback)
menu.add_command(label = "重做",command = callback)
mb = Menubutton(root,text = "test",relief = RAISED)
mb.pack()
test = Menu(mb,tearoff = False)
test.add_command(label = "one",command = callback)
test.add_command(label = "two",command = callback)
mb.config(menu = test)
mainloop()
哪位高手来帮我看看
本帖最后由 阴阳神万物主 于 2019-12-11 12:26 编辑 frame.pack(fill=BOTH,expand=True)
让那个frame的布局填充剩余空间也许就好了,我没试过啊。
对了,你的窗口组件如果没有绑定鼠标右击事件的话,是不会有效果的,框架绑定了,但是框架中的组件没有绑定,那么拥有右键菜单功能的,就只有背景,不包括框架中的组件。
要是想要每个组件都有那个右键菜单,需要将每一个组件都进行一次绑定。
|