我想在pygame中创建一个与tkinter中的菜单完全相同的菜单栏。
from tkinter import *
def donothing():
filewin = Toplevel(root)
button = Button(filewin, text="Do nothing button")
button.pack()
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_command(label="Save as...", command=donothing)
filemenu.add_command(label="Close", command=donothing)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Undo", command=donothing)
editmenu.add_separator()
editmenu.add_command(label="Cut", command=donothing)
editmenu.add_command(label="Copy", command=donothing)
editmenu.add_command(label="Paste", command=donothing)
editmenu.add_command(label="Delete", command=donothing)
editmenu.add_command(label="Select All", command=donothing)
menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=donothing)
helpmenu.add_command(label="About...", command=donothing)
menubar.add_cascade(label="Help", menu=helpmenu)
root.config(menu=menubar)
root.mainloop()
这是tkinter代码,但有没有人知道如何在pygame中创建一些完全相同的方式?
感谢。
答案 0 :(得分:2)
我使用os.environ将pyGame与tkiter结合起来,所以你的tkinter中有一个pygame窗口:
from tkinter import *
from pygame import *
from pygame.locals import *
import os
我为pygame添加了一个框架:
embed = Frame(root, width=w, height=h)
embed.pack()
def donothing():
filewin = Toplevel(root)
button = Button(filewin, text="Do nothing button")
button.pack()
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_command(label="Save as...", command=donothing)
filemenu.add_command(label="Close", command=donothing)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Undo", command=donothing)
editmenu.add_separator()
editmenu.add_command(label="Cut", command=donothing)
editmenu.add_command(label="Copy", command=donothing)
editmenu.add_command(label="Paste", command=donothing)
editmenu.add_command(label="Delete", command=donothing)
editmenu.add_command(label="Select All", command=donothing)
menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=donothing)
helpmenu.add_command(label="About...", command=donothing)
menubar.add_cascade(label="Help", menu=helpmenu)
root.config(menu=menubar)
这是增加的环境:
# Tell pygame's SDL window which window ID to use
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
# Show the window so it's assigned an ID.
root.update()
# Usual pygame initialization
pygame.init()
希望它有所帮助!
答案 1 :(得分:0)
我认为在 pygame 中集成 tkinter 菜单栏是不,它们是不同的工具。
我唯一能看到的就是用 pygame 直接创建菜单栏,只使用屏幕的一部分用于主场景,另一部分用于菜单栏,可以使用按钮(使用矩形或类似对象创建)。
你还有另一种选择,那就是创建一个单独的 tkinter 根窗口(不建议,因为你会有2个主循环相互争斗:来自 tkinter的那个 application和 pygame 应用程序中的应用程序),并与 pygame 主应用程序并行运行。
这些帖子可以帮助您选择第二个选项:
Is there anything I need aware of using Tkinter and pygame together?
Mac and Windows compatible GUI for Python, which is easy to install and works with pygame?
显然,您还可以使用库wxPython,它允许您在普通 wxPython pygame 窗口>窗口。