【发布时间】:2021-02-28 04:41:26
【问题描述】:
我在此代码的第 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, 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_())
【问题讨论】:
-
请尝试将所有代码缩减为minimal reproducible example
标签: python-3.x pyqt5