问题:
使用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