如何为pygame创建这个tkinter菜单栏

时间:2015-01-10 03:32:46

标签: python-3.x tkinter pygame menubar

我想在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中创建一些完全相同的方式?

感谢。

2 个答案:

答案 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 主应用程序并行运行。

这些帖子可以帮助您选择第二个选项:

  1. Is there anything I need aware of using Tkinter and pygame together?

  2. What gui toolkit should I use with Pygame?

  3. What's the best way to add a GUI to a Pygame application?

  4. Mac and Windows compatible GUI for Python, which is easy to install and works with pygame?

  5. Python Game using pyGame with Window Menu elements

  6. 显然,您还可以使用库wxPython,它允许您在普通 wxPython pygame 窗口>窗口。