为了一个学校项目,我和一个朋友用pygame做了一个游戏。pygame窗口嵌入在tkinter框架中。一旦打开应用程序,游戏立即开始。现在我们想用tkinter的按钮开始和暂停游戏。我很高兴能得到任何帮助,谢谢。
import pygame, random, sys
from pygame.locals import *
from pygame.key import *
import tkinter as tk
from tkinter import *
import os
创建一个tkinter框架
root = tk.Tk()
root.title("Borderflip")
embed = tk.Frame(root, width = 500, height = 500) #Erzeugt einen
eingebetteten Rahmen für das Pygame-Fenster
embed.grid(columnspan = (600), rowspan = 500)
embed.pack(side = LEFT) #Fenster nach rechts
buttonwin = tk.Frame(root, width = 75, height = 500)
buttonwin.pack(side = LEFT)
这里是按钮播放和暂停按钮是没有一个功能
def play_button():
play_button = Button(root, padx=8, width=18, pady=8, bd=8, font=("Arial",
26), text="Play", command=play_button)
play_button.pack()
pause_button = Button(root, padx=8, width=18, pady=8, bd=8, font=("Arial",
26), text="Pause", command=root.quit)
pause_button.pack()
quit_button = Button(root, padx=8, width=18, pady=8, bd=8, font=("Arial",
26), text="Quit", command=root.destroy)
quit_button.pack()
在tkinter中集成pyplay的代码
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib'
screen = pygame.display.set_mode((500,500))
screen.fill(pygame.Color(255,255,255))
pygame.display.init()
pygame.display.update()
frame = Frame(root)
frame.pack()
pygame的代码
x = 500 # Breite und Höhe Fenster in Pixel
y = 500
sbreite = 100 # Breite und Höhe Schläger
shöhe = 15
sx = 200 # Definition
sy = 450
bx = int(x/2)
by = int(y/2)
brad = 15
speed = 0
bxspeed = 1
byspeed = -2
leben = 10
def sblock():
global speed
if sx <= 0 or sx >= x-sbreite:
speed = 0
def ballbewegung():
global bx,by
bx += bxspeed
by += byspeed
def reset():
global byspeed,bxspeed,leben,bx,by,sx,sy,speed
sx = 200
sy = 450
bx = int(x/2)
by = int(y/2)
speed = 0
bxspeed = random.randint(-2,2)
if bxspeed == 0:
bxspeed = 1
byspeed = random.randint(-2,2)
if byspeed == 0:
byspeed = 2
screen.fill((0,0,0))
pygame.draw.circle(screen, (255,255,0), (bx,by), brad, 0)
pygame.draw.rect(screen, (255,40,0), (sx,sy,sbreite,shöhe), 0)
pygame.display.flip()
pygame.time.wait(1000)
root.update()
def ballblock():
global byspeed, bxspeed, leben
if by-brad <= 0:
byspeed *= -1
if bx-brad <= 0:
bxspeed *= -1
if bx+brad >= x:
bxspeed *= -1
if by >= 435 and by <= 440:
if bx >= sx-15 and bx <= sx + sbreite + 15:
byspeed *= -1
else:
leben -= 1
reset()
root.update()
def sbewegung():
global sx
sx += speed
while leben > 0:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
speed = -2
if event.key == pygame.K_RIGHT:
speed = 2
screen.fill((0,0,0))
sbewegung()
sblock()
pygame.draw.rect(screen, (255,40,0), (sx,sy,sbreite,shöhe), 0)
ballbewegung()
ballblock()
pygame.draw.circle(screen, (255,255,0), (bx,by), brad, 0)
pygame.display.flip()
pygame.time.wait(5)
print ("haha verloren")
while True:
pygame.display.update()
root.update()
令人遗憾的是,Tkinter Pygame不能很好地协同工作,这通常是因为它们的图形库之间存在冲突,以及一个程序在另一个程序处于活动状态时如何Hibernate。
我个人建议从项目中删除tkinter,并通过pygame构建
按钮
类。(传说中的)精灵Sprite()
,然后可以用tkinter按钮的相同方式使用它。你可以在这里阅读关于这个的文档。
我有播放收音机的服务
在WPF应用程序中,我有一个线程池(每个线程都是对返回base 64映像的REST webservice的调用),我想精确地“控制”这些线程。 这些线程是异步的,我希望能够暂停/恢复它们中的每一个。 > < li> 我想使用CancellationToken之类的东西不是一个选项,因为每个线程都只是进行一次调用并等待响应。 我只是在课堂线程中看到的= 如果有人有什么建议呢? 提前谢谢。
作为我程序的一部分,我需要有一个按钮,当用户单击它时,它会打开一个新窗口。 嗯,我想我应该有一个类来创建框架并按按钮调用它。但我不知道该怎么开始。我刚刚在程序中找到了我的按钮,但它不起作用。有人能告诉我怎么做吗?或对其进行编码。
我将为消息实现断路器模式。基本要求是,如果微服务无法将消息发布到发布主题,则应停止接受来自其他 Kafka 主题的消息。当发布主题可用时,微服务应开始接受来自其他 Kafka 主题的消息。 有没有一种方法可以在Spring BootKafka Streams中实现这一点?
我试图创建一个程序,它有一个tkinter窗口打开,然后当你按下一个按钮,它关闭tkinter窗口,打开一个pyplay窗口。然而,当我点击按钮打开pyplay窗口时,它会打开pyplay窗口,而tkinter窗口保持打开状态。 代码: 我还尝试使用: 我怎样才能解决这个问题?(我正在MacOS 11.1上运行Python 3.7.7)
问题内容: 我想生成大量的Tkinter ,它们可以做不同的事情。我有以下代码: 如果为5,尽管我得到标记为的按钮,但单击它们时都可以。 我需要第一个按钮执行,第二个按钮执行,依此类推。 问题答案: 我认为问题在于,循环结束后,会获取的最终值。这应该解决(未测试): 更新资料 顺便说一句,这是通过在函数中添加一个自变量的默认值来实现的,该默认值是根据在循环中创建每个变量时的值计算得出的,而不是在稍