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

Python+PyQt6編寫一個(gè)圖片播放器

 更新時(shí)間:2025年02月18日 09:09:17   作者:一晌小貪歡  
這篇文章主要為大家詳細(xì)介紹了Python如何結(jié)合PyQt6編寫一個(gè)圖片播放器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下

1、背景介紹

我們可以利用pyqt6創(chuàng)建一個(gè)圖片查看器,其中包括,選則一個(gè)包含多張圖片的文件夾,然后點(diǎn)擊按鈕【下一頁(yè)】或者【上一頁(yè)】進(jìn)行圖片的翻頁(yè)

2、庫(kù)的安裝

庫(kù)用途安裝
PyQt6界面設(shè)計(jì)pip install PyQt6 -i https://pypi.tuna.tsinghua.edu.cn/simple/

3、核心代碼

①:圖片展示

def showImage(self, imagePath):
    self.current_pixmap = QPixmap(imagePath)
    self.resizeImage()

②:自適應(yīng)尺寸縮放

def resizeImage(self):
    if self.current_pixmap:
        # 獲取標(biāo)簽的大小
        label_size = self.lb.size()
        # 保持縱橫比縮放圖片以適應(yīng)標(biāo)簽大小
        scaled_pixmap = self.current_pixmap.scaled(
            label_size.width(),
            label_size.height(),
            Qt.AspectRatioMode.KeepAspectRatio,
            Qt.TransformationMode.SmoothTransformation
        )
        self.lb.setPixmap(scaled_pixmap)

4、完整代碼

import sys
import os

from PyQt6.QtCore import Qt
from PyQt6.QtGui import QPixmap
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QApplication, QLabel, QFileDialog, QPushButton, QHBoxLayout


class MyWidget(QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.setWindowTitle("圖片瀏覽器")
        self.resize(500, 350)

        # 修改 QLabel 的設(shè)置
        self.lb = QLabel()
        self.lb.setMinimumSize(200, 200)  # 設(shè)置最小尺寸
        self.lb.setAlignment(Qt.AlignmentFlag.AlignCenter)  # 居中對(duì)齊

        # 選擇文件夾按鈕
        self.selectFolderButton = QPushButton("選擇文件夾")
        self.selectFolderButton.clicked.connect(self.selectFolder)

        # 上一張按鈕
        self.prevButton = QPushButton("上一張")
        self.prevButton.clicked.connect(self.showPrevImage)

        # 下一張按鈕
        self.nextButton = QPushButton("下一張")
        self.nextButton.clicked.connect(self.showNextImage)

        # 默認(rèn)圖片列表
        self.imageFiles = []
        self.currentIndex = -1
        self.current_pixmap = None  # 添加存儲(chǔ)當(dāng)前圖片的變量

        # 布局設(shè)置
        layout = QVBoxLayout()

        # 圖片標(biāo)簽占據(jù)主要空間
        layout.addWidget(self.lb, 1)  # 添加拉伸因子1

        # 按鈕布局
        buttonLayout = QHBoxLayout()
        buttonLayout.addWidget(self.prevButton)
        buttonLayout.addWidget(self.selectFolderButton)
        buttonLayout.addWidget(self.nextButton)

        layout.addLayout(buttonLayout)
        self.setLayout(layout)

    def selectFolder(self):
        folderPath = QFileDialog.getExistingDirectory(self, "選擇文件夾")
        if folderPath:
            self.imageFiles = [os.path.join(folderPath, f) for f in os.listdir(folderPath)
                               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]
            self.currentIndex = 0
            if self.imageFiles:
                self.showImage(self.imageFiles[self.currentIndex])

    def showImage(self, imagePath):
        self.current_pixmap = QPixmap(imagePath)
        self.resizeImage()

    def showPrevImage(self):
        if self.imageFiles and self.currentIndex > 0:
            self.currentIndex -= 1
            self.showImage(self.imageFiles[self.currentIndex])

    def showNextImage(self):
        if self.imageFiles and self.currentIndex < len(self.imageFiles) - 1:
            self.currentIndex += 1
            self.showImage(self.imageFiles[self.currentIndex])

    def resizeEvent(self, event):
        super().resizeEvent(event)
        self.resizeImage()

    def resizeImage(self):
        if self.current_pixmap:
            # 獲取標(biāo)簽的大小
            label_size = self.lb.size()
            # 保持縱橫比縮放圖片以適應(yīng)標(biāo)簽大小
            scaled_pixmap = self.current_pixmap.scaled(
                label_size.width(),
                label_size.height(),
                Qt.AspectRatioMode.KeepAspectRatio,
                Qt.TransformationMode.SmoothTransformation
            )
            self.lb.setPixmap(scaled_pixmap)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec())

最后效果

以上就是Python+PyQt6編寫一個(gè)圖片播放器的詳細(xì)內(nèi)容,更多關(guān)于Python圖片播放器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法

    PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了PyQt中使用QtSql連接MySql數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python學(xué)生管理系統(tǒng)學(xué)習(xí)筆記

    python學(xué)生管理系統(tǒng)學(xué)習(xí)筆記

    這篇文章主要為大家詳細(xì)介紹了python學(xué)生管理系統(tǒng)的學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼

    Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python Django 頁(yè)面上展示固定的頁(yè)碼數(shù)實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python 分發(fā)包中添加額外文件的方法

    Python 分發(fā)包中添加額外文件的方法

    這篇文章主要介紹了Python 分發(fā)包中添加額外文件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 開始著手第一個(gè)Django項(xiàng)目

    開始著手第一個(gè)Django項(xiàng)目

    這篇文章主要介紹了開始著手第一個(gè)Django項(xiàng)目的過(guò)程,Django是豐富多彩的Python框架中人氣最高的一個(gè),功能多而全,需要的朋友可以參考下
    2015-07-07
  • python利用matplotlib庫(kù)繪制餅圖的方法示例

    python利用matplotlib庫(kù)繪制餅圖的方法示例

    Python強(qiáng)大的原因之一就在于其開源,有很多優(yōu)秀的程序員為其提供了豐富的類庫(kù)。Matplotlib就是其中之一,下面這篇文章主要介紹了python如何利用matplotlib庫(kù)繪制餅圖的方法示例,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • Tkinter組件實(shí)現(xiàn)Radiobutton的示例

    Tkinter組件實(shí)現(xiàn)Radiobutton的示例

    Radiobutton組件用于實(shí)現(xiàn)多選一的問題,本文主要介紹了Tkinter組件實(shí)現(xiàn)Radiobutton的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python matplotlib 注釋文本箭頭簡(jiǎn)單代碼示例

    python matplotlib 注釋文本箭頭簡(jiǎn)單代碼示例

    這篇文章主要介紹了python matplotlib 注釋文本箭頭簡(jiǎn)單代碼示例,具有一定借鑒價(jià)值。
    2018-01-01
  • python條件判斷中not、is、is?not、is?not?None、is?None代碼實(shí)例

    python條件判斷中not、is、is?not、is?not?None、is?None代碼實(shí)例

    None是python中的一個(gè)特殊的常量,表示一個(gè)空的對(duì)象,下面這篇文章主要給大家介紹了關(guān)于python條件判斷中not、is、is?not、is?not?None、is?None的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 一文向您詳細(xì)介紹指令 python -m pip install的用法和功能

    一文向您詳細(xì)介紹指令 python -m pip install的用法和功能

    通過(guò)本文的介紹,我們?cè)敿?xì)了解了python -m pip install命令的用法和功能,從基本用法到安裝特定版本的包、從其他源安裝包、升級(jí)和卸載包,再到使用requirements.txt管理依賴,我們逐步深入了解了pip的強(qiáng)大功能,感興趣的朋友跟隨小編一起看看吧
    2024-07-07

最新評(píng)論

乐安县| 高邮市| 石泉县| 永城市| 甘洛县| 句容市| 洪洞县| 尉犁县| 武乡县| 巴南区| 博爱县| 辽源市| 博乐市| 民乐县| 隆子县| 东台市| 醴陵市| 连江县| 九龙城区| 临沧市| 怀宁县| 得荣县| 哈密市| 莲花县| 团风县| 安岳县| 三台县| 阿克苏市| 双牌县| 罗山县| 商水县| 滁州市| 江都市| 龙井市| 清流县| 营山县| 开封县| 和田县| 梁平县| 洛宁县| 海城市|