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

我无法将pygame游戏链接到tkinter GUI

魏安宁
2023-03-14

基本上,我已经为我的游戏创建了一个pyplay菜单,当我点击它们时,它会加载所有其他pyplay窗口,但是对于一些方面,如添加用户等,我在Tkinter GUI中创建。当我点击加载他们在我的pyplay它不会加载Tkinter图形用户界面,有人知道我如何解决这个问题,或者如果有什么我需要添加到使其工作。

它的行为就像它要加载某个东西,但不加载。第一个名为“mathsvaders”的程序加载得很好,因为它是pygame程序,但最高分在tkinter中,不加载:

pos = 1
while True:
# events
for e in pygame.event.get():
    if e.type == pygame.QUIT:
        pygame.quit()
        sys.exit()
    elif e.type == pygame.KEYDOWN:
        if e.key == pygame.K_DOWN:
            pos += 1
            if pos > 5:
                pos = 1
        elif e.key == pygame.K_UP:
            pos -= 1
            if pos < 1:
                pos = 5
        elif e.key == pygame.K_RETURN:
            if pos == 1:
                import MathsvadersReal
            elif e.key == pygame.K_RETURN:
             if pos == 2:
                import Highscore
            elif pos == 5:
             pygame.quit()
             sys.exit()

表格代码如下:

import Tkinter import Databaseconnector

 class simpleapp_tk(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent) 
        self.parent = parent
        self.initialize()

    def initialize(self):
      def create_widgets(self):
        # create welcome label
        label1 = Tkinter.Label(self, text = "Hello world")
        label1.grid(row = 0, column = 2, columnspan = 4, sticky = 'E')

if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.title('my application')
    app.geometry("250x200")
    app.mainloop()                              

共有2个答案

邹坚壁
2023-03-14

这里使用了两个窗口化系统,它们都需要定期处理事件。您已经将pyplay设置为主事件处理循环(而True:...),但它从未让Tk处理它的事件循环。当您调用app.mainloop时,它将永远无法处理事件。当pyplay没有要处理的事件时,它会在中旋转,而True到这个循环的末尾是调用Tkdate()方法以允许Tk处理事件的好地方。如果游戏循环阻塞等待事件,您也可以使用计时器。

简短的回答是处理两个系统的事件。在pyplay中,对pyplay事件方法之一的调用和对Tk更新方法的常规调用。例如:

import tkinter as tk
root = tk.Tk()
... other stuff ...
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    ... game code ...
    root.update()
彭霄
2023-03-14

当您要加载高分时,主代码导入Highscore模块,这有两个问题:

>

导入语句将其结果缓存在sys.modules中,因此此代码只能工作一次。要重新加载模块,您必须显式地这样做,或者通过调用reload(Highscos)delsys.modules[Highscos]

 类似资料:
  • 我想在我的游戏中添加秒表。我计划修改此代码并添加到我的pygame中: 我是否应该在def init部分中添加一个计时器框,并为计时器代码创建一个新的def?我想让计时器不使用代码,因为我的游戏正在运行时钟。勾选(60),使其不会影响勾选 更新后,我的游戏代码如下:

  • 好吧,首先,我想让你们知道,我已经一年多没有使用python了,所以如果答案很明显,我只是愚蠢,那么请原谅我的无知哈哈。 接下来,我正在创建一个太空入侵者类型的游戏,除了从主屏幕切换到游戏屏幕外,一切都进行得很顺利。这可能只是我用来改变屏幕的方法,但我以前在其他程序中使用过这种方法,从来没有出现过任何问题。或者可能只是试图同时运行太多进程。不管怎样,我找不到任何类似的问题,所以我求助于寻求帮助。

  • 问题内容: 好的,所以我在下面包含了我项目的代码,我只是在做一些平台游戏方面对pygame做一些试验。我试图弄清楚如何按照播放器进行一些非常简单的滚动,因此播放器是相机的中心,它会弹跳/跟随他。谁能帮我? 问题答案: 绘制实体时,你需要将偏移量应用于实体的位置。我们称这个偏移量为 ,因为这是我们想要达到的效果。 首先,我们无法使用群组的功能,因为需要知道其位置并非要在屏幕上绘制的位置(最后,我们l

  • 本文向大家介绍pygame实现打字游戏,包括了pygame实现打字游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了pygame实现打字游戏的具体代码,供大家参考,具体内容如下 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 2.移动字母 先增加一个定时器,设定字母20毫秒移动一格 在主循环中加入移动的代码 3.消除字母 在事件的处理代码中加入对键盘字母的判断

  • 本文向大家介绍python pygame实现2048游戏,包括了python pygame实现2048游戏的使用技巧和注意事项,需要的朋友参考一下 实现2048相对来说比较简单,用4*4的二维数组保存地图,pygame.key.get_pressed()获取键盘操作,详见代码。 效果图 代码 后续可以考虑实现动画和AI。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程

  • 所以我正在用Pygame制作一个游戏,我需要一个菜单,让玩家在不同的游戏类型之间进行选择。我试着让它在显示指令时,玩家可以使用键盘选择类型;然而,当我这样做的时候,游戏就会出错。指示将保留在屏幕上(有时会绘制平面精灵)。当按下时,我添加了一行代码来打印shell中的某些内容,但没有打印任何内容。 注释掉的部分是启动游戏的原始代码。