用Tkinter打造GUI开发工具(38)Tkinter中的PyGame组件
前面文章,我们介绍了Tkinter中的turtle组件,即在Tkinter窗口中运行turtle库的代码,并显示到Tkinter窗口上.
见前面文章<用Tkinter打造GUI开发工具(32)Tkinter中的turtle组件>
https://blog.csdn.net/hepu8/article/details/106322590
既然Tkinter能运行turtle程序,那么Tkinter也支持PyGame库在Tkinter窗口上运行PyGame游戏.
这个模块包含在HP_pygame模块中.
我们下面直接给出演示代码:
import tkinter as tk
import os
import pygame as pg
from pygame.locals import *
import HP_pygame as hpg
root = tk.Tk()
root.title('HP_Pygame演示')
root.geometry('{}x{}+{}+{}'.format(800, 600, 100, 200))
text = tk.Button(root, text='演示')
text.pack()
pp=hpg.pygameview(root)
pp.pack(fill=tk.BOTH, expand=tk.YES)
pp.update() #必须先写,不然不显示控件
pp.set_mode(600, 500 )
def game(fr):
pos = 0
while 1:
fr.screen.fill(pg.Color(0,0,0))
pos = (pos + 1) % fr.screen.get_width()
pg.draw.circle(fr.screen, pg.Color(255,255,255), (pos,100), 30)
pg.display.flip()
pg.display.update()
#fr.update()
# 从消息队列中循环取
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
fr.master.destray()
if (event.type == pg.KEYDOWN or event.type == pg.MOUSEBUTTONDOWN):
pg.quit()
root.destray()
import pygame
def game2(fr):
size = width, height = 600,400
speed = [-2,1]
#背景设置,全白
bg = (255,255,255)
#创建指定大小的窗口 Surface对象
screen = pygame.display.set_mode(size)
#设置窗口标题
pygame.display.set_caption("弹弹弹,小游戏!")
#加载图片
gamemaster = pygame.image.load("img1/png1042.jpg")
#获得图像的位置矩形
position = gamemaster.get_rect()
l_head = gamemaster
r_head = pygame.transform.flip(gamemaster,True,False)
#事件,终止事件
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
if event.type == KEYDOWN:
if event.key == K_LEFT:
gamemaster = l_head
speed = [-2,1]
if event.key == K_RIGHT:
gamemaster = r_head
speed = [2,-1]
if event.key == K_UP:
speed = [1,-2]
if event.key == K_DOWN:
speed = [-1,2]
elif event.type == KEYUP:
#speed =[-2,1]
pass
#移动图像
position = position.move(speed)
if position.left <0 or position.right > width:
#图像翻转 gamemaster,True,False 左右翻转 上下不翻转
gamemaster = pygame.transform.flip(gamemaster,True,False)
#反方向移动
speed[0] = -speed[0]
if position.top <0 or position.bottom >height:
#反方向移动
speed[1] = -speed[1]
#填充背景
screen.fill(bg)
#更新图像
screen.blit(gamemaster,position)
#更新界面
pygame.display.flip()
#延时10ms
pygame.time.delay(10)
hpg.thread_it(game2(pp))
root.mainloop()
程序运行结果.
现在你感觉是不是Tkinter的功能很强大呢?
#独狼荷蒲qq:2775205
#通通小白python量化群:524949939
#电话微信:18578755056
#微信公众号:独狼股票分析