用Tkinter打造GUI開發工具(38)Tkinter中的PyGame組件

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章