最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pygame仿office的頁面切換功能(完整代碼)

 更新時間:2021年05月28日 10:58:51   作者:dhjabc_1  
本文通過兩個版本給大家介紹pygame實(shí)現(xiàn)類似office的頁面切換功能,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、最簡單的切換功能

(一)源碼

import sys, pygame
import os
import random

pygame.init()  # 初始化pygame類
screen = pygame.display.set_mode((600, 600))  # 設(shè)置窗口大小
pygame.display.set_caption('美麗的屏保')  # 設(shè)置窗口標(biāo)題
tick = pygame.time.Clock()
fps = 10  # 設(shè)置刷新率,數(shù)字越大刷新率越高
fcclock = pygame.time.Clock()
bglist = []
flag = 0
runimage = None
nextimage = None

def init_image():
    path = './image/'
    files = []
    dirs = os.listdir(path)
    for diretion in dirs:
        files.append(path + diretion)

    for file in files:
        picture = pygame.transform.scale(pygame.image.load(file), (600, 600))
        dSurface = picture
        # dSurface = pygame.image.load(file).convert()
        bglist.append(dSurface)

def reset():
    global flag,runimage,nextimage
    flag = 0
    if nextimage is None:
        nextimage = random.choice(bglist)
    if runimage is None:
        runimage = random.choice(bglist)
    else:
        runimage = nextimage
        nextimage = random.choice(bglist)

def run():
    global flag,runimage
    reset()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT or event.type == pygame.K_F1:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == pygame.K_SPACE:
                    reset()
        if event.type == pygame.MOUSEBUTTONDOWN:
            reset()
        screen.fill((255, 255, 255))  # 設(shè)置背景為白色
        screen.blit(nextimage, (0, 0))
        screen.blit(runimage, (0, 0))
        fcclock.tick(fps)
        pygame.display.flip()  # 刷新窗口
        # time.sleep(10)

if __name__ == '__main__':
    init_image()
    run()

(二)效果

在這里插入圖片描述

(三)解析

實(shí)際就是使用了runimage和nextimage保存兩個圖片,然后先黏貼nextimage,再黏貼runimage,讓runimage顯示在最前端。
并通過監(jiān)聽鼠標(biāo)和鍵盤操作,每點(diǎn)擊一次,切換一次頁面。
并調(diào)用reset函數(shù)

def reset():
    global flag,runimage,nextimage
    flag = 0
    if nextimage is None:
        nextimage = random.choice(bglist)
    if runimage is None:
        runimage = random.choice(bglist)
    else:
        runimage = nextimage
        nextimage = random.choice(bglist)

二、實(shí)現(xiàn)動態(tài)切屏功能

 (一)向左切換

import sys, pygame
import os
import random

pygame.init()  # 初始化pygame類
WIDTH = 600
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))  # 設(shè)置窗口大小
pygame.display.set_caption('美麗的屏保')  # 設(shè)置窗口標(biāo)題
tick = pygame.time.Clock()
fps = 60  # 設(shè)置刷新率,數(shù)字越大刷新率越高
fcclock = pygame.time.Clock()
bglist = []
flag = 0
runimage = None
nextimage = None
flag = False   # FALSE沒有切屏 TRUE 切屏
flag2 = False
i = 0
j = 0
step = 10

def init_image():
    path = './image/'
    files = []
    dirs = os.listdir(path)
    for diretion in dirs:
        files.append(path + diretion)

    for file in files:
        picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT))
        dSurface = picture
        # dSurface = pygame.image.load(file).convert()
        bglist.append(dSurface)

def reset():
    global flag,runimage,nextimage,flag2,i,j
    flag = False  # FALSE沒有切屏 TRUE 切屏
    flag2 = False
    i = 0
    j = 0
    if nextimage is None:
        nextimage = random.choice(bglist)
    if runimage is None:
        runimage = random.choice(bglist)
    else:
        runimage = nextimage
        nextimage = random.choice(bglist)

def run():
    global flag,runimage,flag2,nextimage,i,j
    reset()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT or event.type == pygame.K_F1:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == pygame.K_SPACE:
                    if flag is False:# FALSE沒有切屏 TRUE 切屏
                        flag = True
                        flag2 = False
            # if event.type == pygame.MOUSEBUTTONDOWN:
            #     reset()
        screen.fill((255, 255, 255))  # 設(shè)置背景為白色
        if flag:
            screen.blit(nextimage, (0, 0))
            screen.blit(runimage, (i, j))
            i -= step
            if i <= -WIDTH:
                flag2 = True
        else:
            screen.blit(nextimage, (0, 0))
            screen.blit(runimage, (0, 0))
        if flag2:
            reset()
        fcclock.tick(fps)
        pygame.display.flip()  # 刷新窗口
        # time.sleep(10)

if __name__ == '__main__':
    init_image()
    run()

(二)向左切換效果

在這里插入圖片描述

三、隨機(jī)效果實(shí)現(xiàn)

實(shí)現(xiàn)上下左右效果

import sys, pygame
import os
import random

pygame.init()  # 初始化pygame類
WIDTH = 600
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))  # 設(shè)置窗口大小
pygame.display.set_caption('美麗的屏保')  # 設(shè)置窗口標(biāo)題
tick = pygame.time.Clock()
fps = 60  # 設(shè)置刷新率,數(shù)字越大刷新率越高
fcclock = pygame.time.Clock()
bglist = []
flag = 0
runimage = None
nextimage = None
flag = False   # FALSE沒有切屏 TRUE 切屏
flag2 = False
i = 0
j = 0
step = 10
choose = 0

def init_image():
    path = './image/'
    files = []
    dirs = os.listdir(path)
    for diretion in dirs:
        files.append(path + diretion)

    for file in files:
        picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT))
        dSurface = picture
        # dSurface = pygame.image.load(file).convert()
        bglist.append(dSurface)

def reset():
    global flag,runimage,nextimage,flag2,i,j,choose
    flag = False  # FALSE沒有切屏 TRUE 切屏
    flag2 = False
    i = 0
    j = 0
    choose = random.randint(0,3)
    if nextimage is None:
        nextimage = random.choice(bglist)
    if runimage is None:
        runimage = random.choice(bglist)
    else:
        runimage = nextimage
        nextimage = random.choice(bglist)

def run():
    global flag,runimage,flag2,nextimage,i,j,choose
    reset()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT or event.type == pygame.K_F1:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == pygame.K_SPACE:
                    if flag is False:# FALSE沒有切屏 TRUE 切屏
                        flag = True
                        flag2 = False
        screen.fill((255, 255, 255))  # 設(shè)置背景為白色
        if flag:
            screen.blit(nextimage, (0,0))
            print(i+WIDTH,j+HEIGHT)
            screen.blit(runimage, (i, j))
            if choose==0:
                i -= step
                if i <= -WIDTH:
                    flag2 = True
            elif choose==1:
                i += step
                if i >= WIDTH:
                    flag2 = True
            elif choose==2:
                j -= step
                if j <= -HEIGHT:
                    flag2 = True
            elif choose==3:
                j += step
                if j >= HEIGHT:
                    flag2 = True
        else:
            screen.blit(nextimage, (0, 0))
            screen.blit(runimage, (0, 0))
        if flag2:
            reset()
            # print(choose)
        fcclock.tick(fps)
        pygame.display.flip()  # 刷新窗口
        # time.sleep(10)

if __name__ == '__main__':
    init_image()
    run()

四、效果展現(xiàn)

在這里插入圖片描述

五、第二個版本

(一)修改了核心代碼

 if flag:
            if choose==0:
                i -= step
                screen.blit(nextimage, (i+WIDTH, 0))
                if i <= -WIDTH:
                    flag2 = True
            elif choose==1:
                screen.blit(nextimage, (i-WIDTH, 0))
                i += step
                if i >= WIDTH:
                    flag2 = True
            elif choose==2:
                screen.blit(nextimage, (0, j+HEIGHT))
                j -= step
                if j <= -HEIGHT:
                    flag2 = True
            elif choose==3:
                screen.blit(nextimage, (0, j-HEIGHT))
                j += step
                if j >= HEIGHT:
                    flag2 = True
            screen.blit(runimage, (i, j))
        else:
            screen.blit(nextimage, (0, 0))
            screen.blit(runimage, (0, 0))

(二)完整代碼

import sys, pygame
import os
import random

pygame.init()  # 初始化pygame類
WIDTH = 600
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))  # 設(shè)置窗口大小
pygame.display.set_caption('美麗的屏保')  # 設(shè)置窗口標(biāo)題
tick = pygame.time.Clock()
fps = 60  # 設(shè)置刷新率,數(shù)字越大刷新率越高
fcclock = pygame.time.Clock()
bglist = []
flag = 0
runimage = None
nextimage = None
flag = False   # FALSE沒有切屏 TRUE 切屏
flag2 = False
i = 0
j = 0
step = 10
choose = 0

def init_image():
    path = './image/'
    files = []
    dirs = os.listdir(path)
    for diretion in dirs:
        files.append(path + diretion)

    for file in files:
        picture = pygame.transform.scale(pygame.image.load(file), (WIDTH, HEIGHT))
        dSurface = picture
        # dSurface = pygame.image.load(file).convert()
        bglist.append(dSurface)

def reset():
    global flag,runimage,nextimage,flag2,i,j,choose
    flag = False  # FALSE沒有切屏 TRUE 切屏
    flag2 = False
    i = 0
    j = 0
    choose = random.randint(0,3)
    if nextimage is None:
        nextimage = random.choice(bglist)
    if runimage is None:
        runimage = random.choice(bglist)
    else:
        runimage = nextimage
        nextimage = random.choice(bglist)

def run():
    global flag,runimage,flag2,nextimage,i,j,choose
    reset()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT or event.type == pygame.K_F1:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == pygame.K_SPACE:
                    if flag is False:# FALSE沒有切屏 TRUE 切屏
                        flag = True
                        flag2 = False
        screen.fill((255, 255, 255))  # 設(shè)置背景為白色
        if flag:
            if choose==0:
                i -= step
                screen.blit(nextimage, (i+WIDTH, 0))
                if i <= -WIDTH:
                    flag2 = True
            elif choose==1:
                screen.blit(nextimage, (i-WIDTH, 0))
                i += step
                if i >= WIDTH:
                    flag2 = True
            elif choose==2:
                screen.blit(nextimage, (0, j+HEIGHT))
                j -= step
                if j <= -HEIGHT:
                    flag2 = True
            elif choose==3:
                screen.blit(nextimage, (0, j-HEIGHT))
                j += step
                if j >= HEIGHT:
                    flag2 = True
            screen.blit(runimage, (i, j))
        else:
            screen.blit(nextimage, (0, 0))
            screen.blit(runimage, (0, 0))
        if flag2:
            reset()
            # print(choose)
        fcclock.tick(fps)
        pygame.display.flip()  # 刷新窗口
        # time.sleep(10)

if __name__ == '__main__':
    init_image()
    run()

(三)另一種效果

在這里插入圖片描述

六、小結(jié)

Ok,V1和V2版本,兩個版本,任君選擇,比較簡單,大家將就著看看啊。后面會有修訂和更多有趣的案例,歡迎關(guān)注,感謝支持!

以上就是pygame實(shí)現(xiàn)類似office的頁面切換功能的詳細(xì)內(nèi)容,更多關(guān)于pygame頁面切換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python/Django后端使用PIL Image生成頭像縮略圖

    Python/Django后端使用PIL Image生成頭像縮略圖

    這篇文章主要為大家詳細(xì)介紹了Python/Django后端使用PIL Image生成頭像縮略圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python使用openpyxl讀寫excel文件的方法

    Python使用openpyxl讀寫excel文件的方法

    本篇文章主要介紹了Python使用openpyxl讀寫excel文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • python實(shí)現(xiàn)視頻分幀效果

    python實(shí)現(xiàn)視頻分幀效果

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)視頻分幀效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 深入分析python 排序

    深入分析python 排序

    這篇文章主要介紹了python 排序的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python排序的知識,感興趣的朋友可以了解下
    2020-08-08
  • Python利用代理ip實(shí)現(xiàn)自動化爬蟲任務(wù)管理

    Python利用代理ip實(shí)現(xiàn)自動化爬蟲任務(wù)管理

    本文主要介紹了Python利用代理ip實(shí)現(xiàn)自動化爬蟲任務(wù)管理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • python線程中同步鎖詳解

    python線程中同步鎖詳解

    這篇文章主要為大家詳細(xì)介紹了python線程中同步鎖的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python中提高pip install速度

    python中提高pip install速度

    本文給大家分享了如何提高pip install速度的方法,其實(shí)就是將默認(rèn)源替換為國內(nèi)高速的源,非常的簡單實(shí)用,有需要的小伙伴可以參考下
    2020-02-02
  • python實(shí)現(xiàn)固定尺寸圖像拼接

    python實(shí)現(xiàn)固定尺寸圖像拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)固定尺寸圖像拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python數(shù)據(jù)結(jié)構(gòu)之棧詳解

    Python數(shù)據(jù)結(jié)構(gòu)之棧詳解

    棧和隊(duì)列是在程序設(shè)計(jì)中常見的數(shù)據(jù)類型,從數(shù)據(jù)結(jié)構(gòu)的角度來講,棧和隊(duì)列也是線性表,是操作受限的線性表。本文將詳細(xì)介紹一下Python中的棧,感興趣的可以了解一下
    2022-03-03
  • python連接mysql并提交mysql事務(wù)示例

    python連接mysql并提交mysql事務(wù)示例

    這篇文章主要介紹了python連接mysql并提交mysql事務(wù)的示例,需要的朋友可以參考下
    2014-03-03

最新評論

江城| 诸暨市| 甘孜县| 万全县| 镇沅| 台安县| 博客| 乌兰浩特市| 定兴县| 德清县| 颍上县| 乡城县| 临湘市| 高密市| 徐汇区| 襄汾县| 台北县| 穆棱市| 无极县| 策勒县| 山西省| 杂多县| 阿坝| 阿尔山市| 法库县| 阜新| 江华| 衡南县| 牙克石市| 宜兰县| 常德市| 调兵山市| 墨玉县| 平阴县| 清水县| 道孚县| 乌拉特前旗| 梁河县| 赤峰市| 西峡县| 侯马市|