问题:
使用PyQt5开发桌面程序,实现功能为:按下按键,打开文件夹,选择文件夹,并将路径显示出来。
解决方法:
一、主要函数(直接能运行的代码见二)
1、选择文件夹并显示
1
2
3
|
def msg( self ,Filepath): directory = QtWidgets.QFileDialog.getExistingDirectory( None , "选取文件夹" , "C:/" ) # 起始路径 self .fileT.setText(directory) |
2、选择文件
1
2
3
|
def msg( self ,Filepath): directory = QtWidgets.QFileDialog.getOpenFileName( self , "选取文件" , "./" , "All Files (*);;Text Files (*.txt)" ) #当窗口非继承QtWidgets.QDialog时,self需替换成 None |
3、选择多个文件
1
2
3
|
def msg( self ,Filepath): directory = QtWidgets.QFileDialog.getOpenFileNames( self , self , "选取多个文件" , "./" , "All Files (*);;Text Files (*.txt)" ) #当窗口非继承QtWidgets.QDialog时,self需替换成 None |
4、设置保存文件路径
1
2
3
|
def msg( self ,Filepath): directory = QtWidgets.QFileDialog.getSaveFileName( self , "设置路径" , "./" , "All Files (*);;Text Files (*.txt)" ) #当窗口非继承QtWidgets.QDialog时,self需替换成 None |
二、一个功能为按下按键选择文件夹并显示路径的demo。
(从项目里摘出来的,不太精致,但运行没问题)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
from PyQt5 import QtCore, QtWidgets import sys ########################################## #ui界面设置 class Ui_MainWindow( object ): def setupUi( self , MainWindow): #主窗口参数设置 MainWindow.setObjectName( "MainWindow" ) MainWindow.resize( 848 , 721 ) self .centralwidget = QtWidgets.QWidget(MainWindow) self .centralwidget.setObjectName( "centralwidget" ) # 设置按键参数 self . file = QtWidgets.QPushButton( self .centralwidget) self . file .setGeometry(QtCore.QRect( 57 , 660 , 175 , 28 )) self . file .setObjectName( "file" ) self . file .setStyleSheet( " margin: 0px; padding: 0px;" >) self . file .setStyleSheet( "QPushButton{ margin: 0px; padding: 0px;" > "QPushButton:hover{color:green}" # 光标移动到上面后的前景色 "QPushButton{border-radius:6px}" # 圆角半径 "QPushButton:pressed{border: None;}" # 按下时的样式 ) # 设置显示窗口参数 self .fileT = QtWidgets.QPushButton( self .centralwidget) self .fileT.setGeometry(QtCore.QRect( 300 , 660 , 480 , 28 )) self .fileT.setObjectName( "file" ) self .fileT.setStyleSheet( " margin: 0px; padding: 0px;" >) self .fileT.setStyleSheet( "QPushButton{ margin: 0px; padding: 0px;" > "QPushButton:hover{color:green}" # 光标移动到上面后的前景色 "QPushButton{border-radius:6px}" # 圆角半径 "QPushButton:pressed{border: None;}" # 按下时的样式 ) #主窗口及菜单栏标题栏设置 MainWindow.setCentralWidget( self .centralwidget) self .menubar = QtWidgets.QMenuBar(MainWindow) self .menubar.setGeometry(QtCore.QRect( 0 , 0 , 848 , 26 )) self .menubar.setObjectName( "menubar" ) MainWindow.setMenuBar( self .menubar) self .statusbar = QtWidgets.QStatusBar(MainWindow) self .statusbar.setObjectName( "statusbar" ) MainWindow.setStatusBar( self .statusbar) self .retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) ################button按钮点击事件回调函数################ self . file .clicked.connect( self .msg) def retranslateUi( self , MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate( "MainWindow" , "Deecamp_Eurus" )) self . file .setText(_translate( "MainWindow" , "选择文件" )) self .fileT.setText(_translate( "MainWindow" , "")) #########选择图片文件夹######### def msg( self ,Filepath): m = QtWidgets.QFileDialog.getExistingDirectory( None , "选取文件夹" , "C:/" ) # 起始路径 self .fileT.setText(m) #########主函数入口 ######### if __name__ = = '__main__' : app = QtWidgets.QApplication(sys.argv) mainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(mainWindow) mainWindow.show() sys.exit(app.exec_()) |
运行效果为:
以上。
补充:pyqt5按钮事件打开文件
如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
|
self .pushButton.clicked.connect( self .btn1_click) #设置绑定事件 def btn1_click( self ): filename,_ = QFileDialog.getOpenFileName(QWidget(), 'open' ,r "E:\images1" ) #打开文件或者如下:getOpenFileName第一个参数要求是QWidget对象 #filename,_=QFileDialog.getOpenFileName(None,'open',r"E:\images1",' ') img = QImage() img.load(filename) #更改图片大小,适应graphicsView窗口大小 img = img.scaled( self .graphicsView.width(), self .graphicsView.height()) #一个问题是:img=img.scaled(width=self.graphicsView.width(),height=self.graphicsView.height())这样 #会出错,不知道什么原因 scene = QGraphicsScene () scene. addPixmap ( QPixmap (). fromImage (img)) self .graphicsView. setScene (scene) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://www.cnblogs.com/yeu4h3uh2/p/14012812.html