Python 3.x QFileDialog:参数1具有意外类型';str';
我在代码的第47行遇到一个错误Python 3.x QFileDialog:参数1具有意外类型';str';,python-3.x,pyqt5,Python 3.x,Pyqt5,我在代码的第47行遇到一个错误 Traceback (most recent call last): File "C:\Users\Bryan\Desktop\PlayMedia3.py", line 47, in open_file filename, _ = QFileDialog.getOpenFileName("Open Song") TypeError: getOpenFileName(parent: QWidget = None,
Traceback (most recent call last):
File "C:\Users\Bryan\Desktop\PlayMedia3.py", line 47, in open_file
filename, _ = QFileDialog.getOpenFileName("Open Song")
TypeError: getOpenFileName(parent: QWidget = None, caption: str = '', directory: str = '', filter: str = '', initialFilter: str = '', options: Union[QFileDialog.Options, QFileDialog.Option] = 0): argument 1 has unexpected type 'str'
不知道发生了什么事
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5 import*
from PyQt5.QtGui import *
from PyQt5.QtWidgets import*
from PyQt5.QtCore import *
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import *
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(471, 145)
self.timeSlider = QtWidgets.QSlider(Form)
self.timeSlider.setGeometry(QtCore.QRect(40, 80, 360, 22))
self.timeSlider.setOrientation(QtCore.Qt.Horizontal)
self.timeSlider.setObjectName("timeSlider")
self.playButton = QtWidgets.QPushButton(Form)
self.playButton.setGeometry(QtCore.QRect(120, 20, 75, 23))
self.playButton.setObjectName("playButton")
self.stopButton = QtWidgets.QPushButton(Form)
self.stopButton.setGeometry(QtCore.QRect(220, 20, 75, 23))
self.stopButton.setObjectName("stopButton")
self.openButton = QtWidgets.QPushButton(Form)
self.openButton.setGeometry(QtCore.QRect(20, 20, 75, 23))
self.openButton.setObjectName("openButton")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.playButton.setText(_translate("Form", "Play"))
self.stopButton.setText(_translate("Form", "Stop"))
self.openButton.setText(_translate("Form", "Open File"))
#Connect control buttons/slides for media player.
self.playButton.pressed.connect(self.play)
self.stopButton.pressed.connect(self.stop)
self.timeSlider.valueChanged.connect(self.setPosition)
self.openButton.pressed.connect(self.open_file)
self.player = QMediaPlayer()
self.player.play()
def open_file(self):
filename, _ = QFileDialog.getOpenFileName("Open Song")
if filename != '':
self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(filename)))
self.playButton.setEnabled(True)
def play():
print("Play Button was pressed")
pass
def stop(self):
print("Stop Button was pressed")
self.timeSlider.setValue(0)
pass
def setPosition(self,x):
print("Slider sliding")
print(x)
pass
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
如果查看错误消息,会发现参数必须是QWidget或None,因此它有两个可能的选项:
- 将None作为第一个参数传递:
filename,QFileDialog.getOpenFileName(无,“打开歌曲”)
- 传递kwarg的名称:
filename,QFileDialog.getOpenFileName(caption=“Open Song”)
请尝试将所有这些代码减少到