我无法使用 tkinter 将菜单栏放在 Canvas widgit 上方
I am having trouble putting a menu bar above a Canvas widgit using tkinter
我正在尝试在 Canvas 小部件上添加菜单栏。在我正在编写的应用程序中实现它之前,我目前正在使用我在网上找到的一些演示代码对其进行测试。当前代码显示 window,但菜单栏出现在页面底部,而不是顶部。
还有更多的旁注:有没有一种方法可以让我在单独的 python 文件中使用函数来绘制形状,而无需创建一个全新的 window?
我的代码:
import tkinter
from tkinter import *
from tkinter import messagebox
def option():
print("Options")
top = Tk()
mb = Menubutton(top, text = "condiments", relief = RAISED)
C = Canvas(top, bg = "blue", height = 250, width = 250)
C.grid()
mb.grid()
mb.menu = Menu(mb, tearoff = 0)
mb["menu"] = mb.menu
mb.menu.add_command(label = "mayo", command = option)
mb.menu.add_command(label = "ketchup", command = option)
coord = 10,50.240, 210
coord1 = 10,50,20,60
arc = C.create_arc(coord, start = 0, extent = 150, fill = "red")
line = C.create_line(coord, fill = "white")
oval = C.create_oval(coord1, fill = "black")
top.mainloop()
默认情况下,网格会自动增加行和列,除非您另外指定。您也可以简单地重新排序代码,以便默认值符合您的期望。
Python的禅宗说"explicit is better than implicit"。如果明确定义行和列,代码会更容易理解,你可以把菜单栏放在任何你想放的地方。
mb.grid(row=0, column=0)
C.grid(row=1, column=0)
我正在尝试在 Canvas 小部件上添加菜单栏。在我正在编写的应用程序中实现它之前,我目前正在使用我在网上找到的一些演示代码对其进行测试。当前代码显示 window,但菜单栏出现在页面底部,而不是顶部。
还有更多的旁注:有没有一种方法可以让我在单独的 python 文件中使用函数来绘制形状,而无需创建一个全新的 window?
我的代码:
import tkinter
from tkinter import *
from tkinter import messagebox
def option():
print("Options")
top = Tk()
mb = Menubutton(top, text = "condiments", relief = RAISED)
C = Canvas(top, bg = "blue", height = 250, width = 250)
C.grid()
mb.grid()
mb.menu = Menu(mb, tearoff = 0)
mb["menu"] = mb.menu
mb.menu.add_command(label = "mayo", command = option)
mb.menu.add_command(label = "ketchup", command = option)
coord = 10,50.240, 210
coord1 = 10,50,20,60
arc = C.create_arc(coord, start = 0, extent = 150, fill = "red")
line = C.create_line(coord, fill = "white")
oval = C.create_oval(coord1, fill = "black")
top.mainloop()
默认情况下,网格会自动增加行和列,除非您另外指定。您也可以简单地重新排序代码,以便默认值符合您的期望。
Python的禅宗说"explicit is better than implicit"。如果明确定义行和列,代码会更容易理解,你可以把菜单栏放在任何你想放的地方。
mb.grid(row=0, column=0)
C.grid(row=1, column=0)