本文实现一个图片和文本文件选择器的案例,效果如下:

文件选择查看功能很简单,只需要设计好图片文件和文本文件的选择函数就可以了。
1 图片文件选择
  #图片文件选择槽函数,支持png ico jpg格式文件
  def imgFile(self):
        fname, _tmp = QFileDialog.getOpenFileNames(self,'Open file','./images',"*.png *.ico *.jpg")
        # self.lb.setPixmap(QPixmap(fname))
        try:
            pixmap = QPixmap(fname[0])
            if not pixmap.isNull():
                self.lb.setPixmap(pixmap)
            else:
                print(f"无法加载图片: {fname}")
        except Exception as e:
            print(f"发生异常: {e}")
在面板中配置信号触发按钮:
		self.btn1 = QPushButton("选择图片文件")
        self.btn1.clicked.connect(self.imgFile)
2 文本文件选择
 #文本文件选择槽函数,定义DFileDialog弹窗
 def textFile(self):
        dlg = QFileDialog()
        dlg.setFileMode(QFileDialog.FileMode.AnyFile)
        dlg.setFilter(QDir.Filter.Files)
        if dlg.exec():
            fnames=dlg.selectedFiles()
            f = open(fnames[0],'r',encoding='utf-8')
            with f:
                txt = f.read()
                self.te.setText(txt)
面板中进行配置信号触发位置:
		self.btn2 = QPushButton("选择文本文件")
        self.btn2.clicked.connect(self.textFile)
3 定义布局盒子
#垂直布局盒子
layout = QVBoxLayout()
把按钮和文本框都添加到布局盒子里,添加方式如下:
layout.addWidget(self.btn1)
4 完整代码
# -*- coding:utf-8 -*-
"""
------------------------------------------------
File Name: 文件选择.py
Description:
Author: lzq
date:2024-07-25 10:10
------------------------------------------------
"""
import sys
from PyQt6.QtCore import QDir
from PyQt6.QtGui import *
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QPushButton, QLabel, QTextEdit, QFileDialog, QApplication
class MyFileWidget(QWidget):
    def __init__(self,parent=None):
        super(MyFileWidget,self).__init__(parent)
        self.setUI()
    def setUI(self):
        self.setWindowTitle("文件选择案例")
        self.setWindowIcon(QIcon('./web.ico'))
        layout = QVBoxLayout()
        self.btn1 = QPushButton("选择图片文件")
        self.btn1.clicked.connect(self.imgFile)
        layout.addWidget(self.btn1)
        self.lb = QLabel("")
        layout.addWidget(self.lb)
        self.btn2 = QPushButton("选择文本文件")
        self.btn2.clicked.connect(self.textFile)
        layout.addWidget(self.btn2)
        self.te = QTextEdit()
        layout.addWidget(self.te)
        self.setLayout(layout)
    def imgFile(self):
        fname, _tmp = QFileDialog.getOpenFileNames(self,'Open file','./images',"*.png *.ico *.jpg")
        # self.lb.setPixmap(QPixmap(fname))
        try:
            pixmap = QPixmap(fname[0])
            if not pixmap.isNull():
                self.lb.setPixmap(pixmap)
            else:
                print(f"无法加载图片: {fname}")
        except Exception as e:
            print(f"发生异常: {e}")
    def textFile(self):
        dlg = QFileDialog()
        dlg.setFileMode(QFileDialog.FileMode.AnyFile)
        dlg.setFilter(QDir.Filter.Files)
        if dlg.exec():
            fnames=dlg.selectedFiles()
            f = open(fnames[0],'r',encoding='utf-8')
            with f:
                txt = f.read()
                self.te.setText(txt)
if __name__=='__main__':
    app = QApplication(sys.argv)
    w = MyFileWidget()
    w.show()
    sys.exit(app.exec())

下一篇:布局管理



















