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

PyQt5簡(jiǎn)單讀取以及顯示圖片的應(yīng)用實(shí)例

 更新時(shí)間:2023年05月12日 10:51:56   作者:暮川OvO  
我們?cè)谶M(jìn)行圖像處理時(shí),經(jīng)常會(huì)用到讀取圖片并顯示出來(lái)這樣的操作,下面這篇文章主要給大家介紹了關(guān)于PyQt5簡(jiǎn)單讀取以及顯示圖片應(yīng)用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

本文為PyQt5入門教程,具體為以下四步驟

一、程序界面簡(jiǎn)單設(shè)計(jì)

二、通過下拉列表框讀取讀取指定路徑的圖片

三、通過讀取到的圖片顯示在界面上

四、退出事件

最終效果如下:

 一、程序界面簡(jiǎn)單設(shè)計(jì)

程序初始構(gòu)成如下

#利用PyQt建立界面必須使用QApplication,代表整個(gè)應(yīng)用程序,是整個(gè)Qt的命脈,主要負(fù)責(zé)應(yīng)用程序的初始化和結(jié)束
import sys  #引用sys庫(kù)
from PyQt5 import QtWidgets #引用PyQt5庫(kù)里QtWidgets類
from PyQt5.QtWidgets import *   #導(dǎo)入PyQt5.QtWidgets里所有的方法
from PyQt5.QtGui import *    #導(dǎo)入PyQt5.QtGui里所有的方法
import os    #引用os庫(kù)
class Qt_Window(QWidget):   #定義一個(gè)類,繼承于QWidget
    def __init__(self): #構(gòu)建方法
        self._app = QtWidgets.QApplication([])  #創(chuàng)建QApplication示例
        super(Qt_Window,self).__init__()    #固定格式
    def init_ui(self):  #定義方法,在該方法里構(gòu)建界面組件
        self.win = QMainWindow()
        self.win.showFullScreen()   #窗口全屏顯示,不帶標(biāo)題欄和邊框
        sys.exit(self._app.exec_()) #sys.exit()退出程序機(jī)制 app.exec_()的作用是運(yùn)行主循環(huán),開始進(jìn)行事件處理,直到結(jié)束
s = Qt_Window() #調(diào)用對(duì)象和方法
s.init_ui() #調(diào)用對(duì)象和方法

在 init_ui內(nèi)開始界面布局(注:分辨率為1920 × 1080) 

def init_ui(self):
        self.win = QMainWindow()
 
        #定義組件
        self.comboBox = QComboBox(self.win)    #下拉列表框
        self.number_lable = QLabel(self.win)    #標(biāo)簽
        self.open_Button = QPushButton(self.win)    #退出按鈕
        self.detect_image = QLabel(self.win)    #圖片(目前為標(biāo)簽控件,需要后續(xù)將其轉(zhuǎn)換為圖片控件)
        
        #設(shè)置控件
        self.comboBox.resize(200,50)
        self.comboBox.move(600,800)
 
        self.open_Button.resize(200,50)
        self.open_Button.move(1000,800)
        self.open_Button.setText("退出")
 
        self.detect_image.resize(700,550)
        self.detect_image.move(550,100)
 
        self.number_lable.resize(200,50)
        self.number_lable.move(900,700)
        
        #resize為設(shè)置大小,move為設(shè)置x與y坐標(biāo),setText為設(shè)置控件文本內(nèi)容
      
        self.win.showFullScreen()
        sys.exit(self._app.exec_())

結(jié)果應(yīng)為

 注:此時(shí)的退出按鈕沒有效果,可自行退出界面

當(dāng)前布局代碼:

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import os
class Qt_Window(QWidget):
    def __init__(self):
        self._app = QtWidgets.QApplication([])
        super(Qt_Window,self).__init__()
 
    def init_ui(self):
        self.win = QMainWindow()
 
        self.comboBox = QComboBox(self.win)
        self.number_lable = QLabel(self.win)
        self.open_Button = QPushButton(self.win)
        self.detect_image = QLabel(self.win)
        
        self.comboBox.resize(200,50)
        self.comboBox.move(600,800)
 
        self.open_Button.resize(200,50)
        self.open_Button.move(1000,800)
        self.open_Button.setText("退出")
 
        self.detect_image.resize(700,550)
        self.detect_image.move(550,100)
 
        self.number_lable.resize(200,50)
        self.number_lable.move(900,700)
   
        self.win.showFullScreen()
        sys.exit(self._app.exec_())
 
s = Qt_Window()
s.init_ui()

二、通過下拉列表框讀取指定路徑上的圖片

1.設(shè)置路徑

一般情況下最好設(shè)置為絕對(duì)路徑,在init_ui內(nèi)輸入以下:

self.path = ("C:\\123\\picture\\")

設(shè)置路徑的時(shí)候一定要注意要輸入“\\”而非單個(gè)“\”,單個(gè)“\”將會(huì)對(duì)“\”后的第一個(gè)字母進(jìn)行轉(zhuǎn)義! 

2.將讀取到的圖片名稱添加到下拉列表框內(nèi)

使用os.listdir()指令,將文件夾內(nèi)的所有文件讀取出來(lái)

        self.img_list = os.listdir(self.path)

此時(shí)可以嘗試輸出一下這個(gè)self.img_list

 (文件夾內(nèi)) 

(輸出結(jié)果)

可以看出結(jié)果是符合的,并且返回出來(lái)的結(jié)果為列表,倘若要將此結(jié)果添加到下拉列表框內(nèi),那么應(yīng)該使用for ... in ... 循環(huán)將數(shù)據(jù)代入

        self.comboBox.addItems([self.img_list[i] for i in range(len(self.img_list))])

以上代碼的意思為:將self.img_list這個(gè)列表內(nèi)的數(shù)據(jù)以此添加到下拉列表框內(nèi)。

self.comboBox.addItems()為添加多個(gè)列表

for i in range(len(self.img_list))先通過len算出self.img_list的長(zhǎng)度為3,再利用range將其轉(zhuǎn)換為0-3的區(qū)間,然后將0-3的數(shù)字以此代入i后,再將self.img_list[i]里的數(shù)據(jù)以此添加到里面。

如:self.img_list[0]為天空.jpg;self.img_list[1]為海洋.jpg

注意:range()輸出的是一串連續(xù)的數(shù)據(jù),而len()輸出的是單個(gè)數(shù)據(jù),所以當(dāng)放入循環(huán)操作時(shí),range()會(huì)進(jìn)行多次循環(huán),而len()只會(huì)進(jìn)行一次循環(huán)!

此時(shí)打開串口可以看到下拉列表框內(nèi)已添加了路徑內(nèi)所有的圖片

3.將讀取到的圖片展示到界面上

我們需要實(shí)時(shí)監(jiān)測(cè)下拉列表框選擇了哪個(gè)圖片,此時(shí)我們可以自行定義一個(gè)選擇列表事件

    def show_img(self):
        img = self.comboBox.currentText()
        pix = QPixmap(self.path + "\\" +img)    #需額外添加"\\"否則輸出為C:\123\picture093056.jpg
        self.detect_image.setPixmap(pix)
        self.detect_image.setScaledContents(True)
        self.number_lable.setText(img)

首先通過currentText()函數(shù)獲取到當(dāng)前下拉列表框內(nèi)的文字(圖片名稱),再將所獲取到的圖片名稱再加上路徑,就可以利用QPixmap來(lái)展示出來(lái)。將pix變成你選擇的圖片,再利用setPixmap函數(shù)將界面上的detect_image控件從標(biāo)簽轉(zhuǎn)換成圖片。

由于圖片的分辨率不為統(tǒng)一,所以可以加上setScaledContents(True)這個(gè)函數(shù)將其設(shè)置為自適應(yīng)大?。ㄖ霸O(shè)置界面時(shí)所設(shè)置的控件大?。?/p>

self.number_lable.setText(img)是將讀取到的圖片名稱輸出到界面上

此時(shí)還只是定義了這個(gè)事件,我們需要將這個(gè)事件和下拉列表框進(jìn)行綁定,在init_ui下輸入以下代碼

        self.comboBox.activated.connect(self.show_img)

此時(shí)打開界面并選擇圖片可以看到以下結(jié)果

 如果想將海洋.jpg更改為海洋,可以在選擇列表事件內(nèi)將設(shè)置標(biāo)簽文本的代碼修改為以下

        lable = img.split(".")[0]
        self.number_lable.setText(lable)

通過split(“.”)指令將海洋.jpg中以“.”為分隔符輸出(海洋,jpg)列表,并通過在后方添加[0],表示僅輸出第一個(gè)也就是僅輸出為“海洋”

此時(shí)再打開界面可看見

四、退出事件

1.定義一個(gè)退出事件

自定義退出事件

    def exit(self): #定義關(guān)閉事件
        while True:
            sys.exit(0) #sys.exit(0)為正常退出  sys.exit(1)為異常退出

 再將退出按鈕控件和退出事件進(jìn)行綁定

        self.open_Button.clicked.connect(self.exit)

此時(shí)打開界面點(diǎn)擊退出按鈕即可正常退出了 

總結(jié)

完整代碼如下

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import os
class Qt_Window(QWidget):
    def __init__(self):
        self._app = QtWidgets.QApplication([])
        super(Qt_Window,self).__init__()
 
    def init_ui(self):
        self.win = QMainWindow()
 
        self.comboBox = QComboBox(self.win)
        self.number_lable = QLabel(self.win)
        self.open_Button = QPushButton(self.win)
        self.detect_image = QLabel(self.win)
 
        #設(shè)置路徑
        self.path = ("C:\\123\\picture\\")
        
        self.comboBox.resize(200,50)
        self.comboBox.move(600,800)
        self.img_list = os.listdir(self.path)
        self.comboBox.addItems([self.img_list[i] for i in range(len(self.img_list))])
        self.comboBox.activated.connect(self.show_img)
 
 
        self.open_Button.resize(200,50)
        self.open_Button.move(1000,800)
        self.open_Button.setText("退出")
        self.open_Button.clicked.connect(self.exit)
 
        self.detect_image.resize(700,550)
        self.detect_image.move(550,100)
 
        self.number_lable.resize(200,50)
        self.number_lable.move(900,700)
        
      
        self.win.showFullScreen()
        sys.exit(self._app.exec_())
 
    def show_img(self):
        img = self.comboBox.currentText()
        pix = QPixmap(self.path + "\\" +img)
        self.detect_image.setPixmap(pix)
        self.detect_image.setScaledContents(True)
        lable = img.split(".")[0]
        self.number_lable.setText(lable)
 
    def exit(self):
        while True:
            sys.exit(0)
 
s = Qt_Window()
s.init_ui()

以上便是本人的制作過程,如遇問題或者文章有錯(cuò)誤可私信或者評(píng)論 

到此這篇關(guān)于PyQt5簡(jiǎn)單讀取以及顯示圖片的文章就介紹到這了,更多相關(guān)PyQt5讀取及顯示圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中網(wǎng)絡(luò)請(qǐng)求中Retry策略實(shí)現(xiàn)方式

    Python中網(wǎng)絡(luò)請(qǐng)求中Retry策略實(shí)現(xiàn)方式

    這篇文章主要介紹了Python中網(wǎng)絡(luò)請(qǐng)求中Retry策略實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python3.6中Twisted模塊安裝的問題與解決

    Python3.6中Twisted模塊安裝的問題與解決

    這篇文章主要介紹了Python3.6中Twisted模塊安裝的問題與解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python數(shù)據(jù)類型的詳細(xì)分析(附示例代碼)

    python數(shù)據(jù)類型的詳細(xì)分析(附示例代碼)

    這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)類型分析的相關(guān)資料,python里可以通過type()函數(shù)來(lái)查看數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Python中的異常處理try/except/finally/raise用法分析

    Python中的異常處理try/except/finally/raise用法分析

    這篇文章主要介紹了Python中的異常處理try/except/finally/raise用法,結(jié)合實(shí)例形式分析了Python異常處理try/except/finally/raise相關(guān)功能與使用操作技巧,并附帶了Python常見異常的表格說明,需要的朋友可以參考下
    2019-02-02
  • Python字符串hashlib加密模塊使用案例

    Python字符串hashlib加密模塊使用案例

    這篇文章主要介紹了Python字符串hashlib加密模塊使用案例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 解決Jupyter 文件路徑的問題

    解決Jupyter 文件路徑的問題

    這篇文章主要介紹了解決Jupyter 文件路徑的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-03-03
  • Python多進(jìn)程同步簡(jiǎn)單實(shí)現(xiàn)代碼

    Python多進(jìn)程同步簡(jiǎn)單實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python多進(jìn)程同步簡(jiǎn)單實(shí)現(xiàn)代碼,涉及Python基于Process與Lock模塊運(yùn)行進(jìn)程與鎖機(jī)制實(shí)現(xiàn)多進(jìn)程同步的相關(guān)技巧,需要的朋友可以參考下
    2016-04-04
  • Python實(shí)現(xiàn)的字典值比較功能示例

    Python實(shí)現(xiàn)的字典值比較功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的字典值比較功能,可實(shí)現(xiàn)針對(duì)字典格式數(shù)據(jù)的判斷、比較功能,涉及Python字典格式數(shù)據(jù)的遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例

    Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例

    今天小編就為大家分享一篇Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • Python實(shí)現(xiàn)簡(jiǎn)單的用戶交互方法詳解

    Python實(shí)現(xiàn)簡(jiǎn)單的用戶交互方法詳解

    這篇文章給大家分享了關(guān)于Python實(shí)現(xiàn)簡(jiǎn)單的用戶交互的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2018-09-09

最新評(píng)論

灯塔市| 无为县| 宁都县| 尉氏县| 丰台区| 永济市| 南部县| 浦县| 察隅县| 渝中区| 阳新县| 沁源县| 玉门市| 三门峡市| 九江县| 成安县| 天水市| 乐平市| 九寨沟县| 灵宝市| 丰城市| 湖北省| 高淳县| 阿巴嘎旗| 秀山| 临猗县| 汶川县| 麻阳| 云安县| 潼南县| 银川市| 神木县| 五大连池市| 天峨县| 江源县| 台湾省| 东乡族自治县| 博野县| 西和县| 德钦县| 建瓯市|