用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
#微信公衆號:獨狼股票分析