亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PyQt5簡單讀取以及顯示圖片的應用實例

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

前言

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

一、程序界面簡單設計

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

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

四、退出事件

最終效果如下:

 一、程序界面簡單設計

程序初始構成如下

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

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

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)    #圖片(目前為標簽控件,需要后續(xù)將其轉換為圖片控件)
        
        #設置控件
        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為設置大小,move為設置x與y坐標,setText為設置控件文本內容
      
        self.win.showFullScreen()
        sys.exit(self._app.exec_())

結果應為

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

當前布局代碼:

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.設置路徑

一般情況下最好設置為絕對路徑,在init_ui內輸入以下:

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

設置路徑的時候一定要注意要輸入“\\”而非單個“\”,單個“\”將會對“\”后的第一個字母進行轉義! 

2.將讀取到的圖片名稱添加到下拉列表框內

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

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

此時可以嘗試輸出一下這個self.img_list

 (文件夾內) 

(輸出結果)

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

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

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

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

for i in range(len(self.img_list))先通過len算出self.img_list的長度為3,再利用range將其轉換為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()輸出的是單個數(shù)據(jù),所以當放入循環(huán)操作時,range()會進行多次循環(huán),而len()只會進行一次循環(huán)!

此時打開串口可以看到下拉列表框內已添加了路徑內所有的圖片

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

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

    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ù)獲取到當前下拉列表框內的文字(圖片名稱),再將所獲取到的圖片名稱再加上路徑,就可以利用QPixmap來展示出來。將pix變成你選擇的圖片,再利用setPixmap函數(shù)將界面上的detect_image控件從標簽轉換成圖片。

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

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

此時還只是定義了這個事件,我們需要將這個事件和下拉列表框進行綁定,在init_ui下輸入以下代碼

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

此時打開界面并選擇圖片可以看到以下結果

 如果想將海洋.jpg更改為海洋,可以在選擇列表事件內將設置標簽文本的代碼修改為以下

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

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

此時再打開界面可看見

四、退出事件

1.定義一個退出事件

自定義退出事件

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

 再將退出按鈕控件和退出事件進行綁定

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

此時打開界面點擊退出按鈕即可正常退出了 

總結

完整代碼如下

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.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()

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

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

相關文章

  • Python實現(xiàn)照片卡通化

    Python實現(xiàn)照片卡通化

    animegan2-pytorch機器學習項目可以實現(xiàn)照片動漫化,本文將為大家詳細介紹一下如何使用這一項目,感興趣的小伙伴快來跟隨小編一起學習吧
    2021-12-12
  • Python ARP掃描與欺騙實現(xiàn)全程詳解

    Python ARP掃描與欺騙實現(xiàn)全程詳解

    這篇文章主要介紹了Python 實現(xiàn)ARP掃描與欺騙,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • 詳解python opencv、scikit-image和PIL圖像處理庫比較

    詳解python opencv、scikit-image和PIL圖像處理庫比較

    這篇文章主要介紹了詳解python opencv、scikit-image和PIL圖像處理庫比較,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Python實現(xiàn)刪除重復文件的示例代碼

    Python實現(xiàn)刪除重復文件的示例代碼

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)刪除重復文件功能,文中的示例代碼講解詳細,對我們學習Python有一定的幫助,感興趣的小伙伴的可以了解一下
    2023-02-02
  • Flask URL傳參與視圖映射的實現(xiàn)方法

    Flask URL傳參與視圖映射的實現(xiàn)方法

    這篇文章主要介紹了Flask URL傳參與視圖映射的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-03-03
  • Python的Django框架中模板碎片緩存簡介

    Python的Django框架中模板碎片緩存簡介

    這篇文章主要介紹了Python的Django框架中模板碎片緩存,包括給cache標簽傳遞參數(shù)等方法,需要的朋友可以參考下
    2015-07-07
  • 使用Keras實現(xiàn)Tensor的相乘和相加代碼

    使用Keras實現(xiàn)Tensor的相乘和相加代碼

    這篇文章主要介紹了使用Keras實現(xiàn)Tensor的相乘和相加代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 用Python監(jiān)控NASA TV直播畫面的實現(xiàn)步驟

    用Python監(jiān)控NASA TV直播畫面的實現(xiàn)步驟

    本文分享一個名為"Spacestills"的開源程序,它可以用于查看 NASA TV 的直播畫面(靜止幀)
    2021-05-05
  • PyGraphviz 安裝使用及注意事項

    PyGraphviz 安裝使用及注意事項

    PyGraphviz 是對 Graphviz 的封裝,提供了 Python 接口的調用,這篇文章主要介紹了PyGraphviz 安裝使用,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • python的類class定義及其初始化方式

    python的類class定義及其初始化方式

    這篇文章主要介紹了python的類class定義及其初始化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論