当前位置: 首页 > 知识库问答 >
问题:

如何嵌入一个Tkinter窗口到pygameGUI?

芮瑾瑜
2023-03-14

我已经分别对Tkinter窗口和pygame游戏进行了编码。然而,当我试图将两者联系起来时,游戏将不再有效。

Tkinter窗口用于允许用户输入数据,然后将数据保存到文件中,并在使用pygame制作的游戏中使用。主项目使用pygame制作,Tkinter窗口是一个附加功能。

我已尝试此操作,但接口冻结,因此出现以下错误:

过程结束,退出代码134(被信号6:SIGABRT中断)

有没有办法在我的pygame循环中嵌入Tkinter事件循环?

注意:这是我的高级计算项目的一部分,所以我真的很感激指针。

这是我的密码:

from tkinter import *
import tkinter as tk
import json

class newWords(tk.Tk):

    def __init__(self):

        tk.Tk.__init__(self)

        self.title("New Words")
        self.resizable(width=False, height=False)

        self.newWord = Label(self, text= "Add")
        self.newWord.grid(row= 0, column = 0)

        self.newWord_entry = Entry(self, width=20)
        self.newWord_entry.grid(row = 1, column = 0)

        self.add_button = Button(self, width=20, text="Add", command=self.add )
        self.add_button.grid(row = 2, column = 0)

        self.protocol("WM_DELETE_WINDOW", self.save)
        self.mainloop()

    def add(self):
        global en_Words
        add = self.newWord_entry.get()
        if add != "":
            en_Words.append(add)
        self.newWord_entry.delete(0, END)

    def clearBox(self):
        self.new_Word_entry.delete(0, END)
        return

    def save(self):
        with open('CUSTOM_enWords.json', 'w') as f:
            json.dump(en_Words, f, indent=2)
        if messagebox.askyesno("Exit", "Do you want to stop creating this custom list?"):
            self.destroy()

    def AddNew():
        addNew = True

        while addNew:

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        quit()
                    if event.key == pygame.K_SPACE:
                        addNew = False

            gameDisplay.fill(white)
            message_to_screen("Add New Words",
                              black,
                              -200,
                              "large")

            custom = newWords()

            message_to_screen("Press SPACE to go back to Main Menu or ESC to quit.",
                              black,
                              200)
            pygame.display.update()
            clock.tick(FPS)

共有1个答案

山越
2023-03-14

我不相信你能把tkinter嵌入到pygame中。

当我需要为pyplay游戏提供用户输入时,我使用了PGU提供的小部件。

 类似资料:
  • 所以我正在用pygame做一个游戏,我也想用tkinter。我在tkinter窗口中嵌入了一个pygame窗口,但我似乎什么都做不了。 对于上下文,以下是完整的代码: 当我使用时,什么都不会发生。在类中使用pyplay是有效的,但是在我更复杂的游戏中,为所有变量使用self.variable似乎是不必要的。 如何在window类之外的pygame窗口中运行代码?

  • 问题内容: 我和一个朋友正在pygame做游戏。我们希望将pygame窗口嵌入到tkinter或WxPython框架中,以便我们可以包括WX或Tkinter支持的文本输入,按钮和下拉菜单。我搜寻了互联网上的答案,但发现的所有人都在问同样的问题,但都没有一个很好的答案。 实现嵌入到tkinter或WX框架中的pygame显示的最佳方法是什么?(最好是TKinter) 可以在pygame显示器旁边包含

  • 我和一个朋友在玩pygame游戏。我们希望在tkinter或WxPython框架中嵌入pygame窗口,这样我们就可以包含WX或tkinter支持的文本输入、按钮和下拉菜单。我在互联网上搜寻答案,但我发现所有人都在问同样的问题,没有一个得到很好的回答。 什么是最好的方式来实现一个pyplay显示嵌入到tkinter或WX框架?(首选TKinter) 这些功能可以与pygame显示器一起使用的任何其

  • 我正试图通过pySDL2将SDL2窗口嵌入到Tkinter应用程序中。如何设置pySDL2窗口、渲染器,使渲染或绘图显示在嵌入的帧中? 其他例子已经显示了pyplay,但是我发现我的pyplay版本目前不能正确地与SDL2一起工作。我知道还有其他pyplay的实现试图实现SDL2,但是与SDL2的兼容性对我来说是最重要的。 一个正确工作的例子是Tkinter窗口中的一个帧,该窗口有一个屏幕,当单击

  • 我正在使用tkinter和pygame创建一个游戏,当程序从菜单启动pygame时,我不知道如何关闭tkinter窗口。谢谢你的帮助。 主菜单 选项菜单 波塞门努酒店 (这些类都在同一个文件中,为了更好的可读性,我对代码进行了拆分) 这里的代码是我程序的后端,这个模块包含了我所有的pyplay代码: 这里的代码是我的类,用于为tkinter窗口导入自定义按钮:

  • 我正在使用Pygame模块制作一个简单的游戏。我需要Tkinter窗口与Pygame窗口一起打开。 每当我试图打开两个窗口时,第二个窗口只有在我杀死第一个窗口后才会打开。 现在,我能想到的唯一解决方案是使用多线程。但是,我无法实现它。 我该怎么做呢?我真的很感激这里的帮助。谢谢你!