我试图让用户上传一个文件到一个QWizardPage上的应用程序,然后能够在另一个QWizardPage上重用相同的文件路径。但是,从我的代码
class ExecutePage(QtWidgets.QWizardPage):
def __init__(self,*args,**kwargs):
super().__init__()
def initializePage(self):
self.setTitle("Choose file to execute")
self.setSubTitle("Please choose a file to execute")
self.myTextBox = QtWidgets.QTextEdit(self)
self.myTextBox.setGeometry(QtCore.QRect(100, 0, 350, 50))
self.uploader = QtWidgets.QPushButton("upload",self)
self.uploader.clicked.connect(self.get_file_name)
def get_file_name(self):
self.name = QtWidgets.QFileDialog.getOpenFileName(self.uploader,'Choose File to Run')[0]
self.registerField("file_name",self.name,"currentText")
class ConclusionPage(QtWidgets.QWizardPage):
def __init__(self,*args,**kwargs):
super().__init__()
def initializePage(self):
self.setSubTitle(self.field("file_name"))我搞错了
TypeError: registerField(self,str,QWidget,property: str = None,changedSignal: PYQT_SIGNAL = 0):参数2有意想不到的类型'str‘
是否有一种简单的方法可以将这个特定的字符串(self.name)转换为能够传递给向导中其他页面的QWidget (例如,在本例中,可以传递到结论页中的字幕字段)?
我已经看过这些文档,但无法理解,所以我希望能给出一些建议。谢谢。
发布于 2018-07-10 20:29:09
您只能使用registerField()方法将qproperty传递给QWidget,在QFileDialog的情况下是不可能的,因为没有与选择相关联的q属性--而且getOpenFileName()是一个静态方法,获取对象是一个复杂的任务,有两个可能的解决方案,第一个是创建一个继承自QFileDialog的类,并具有与选择相关的qproperty,或者使用python的魔力传递值。最后一个是我将要使用的方法。
class ExecutePage(QtWidgets.QWizardPage):
...
def get_file_name(self):
name, _ = QtWidgets.QFileDialog.getOpenFileName(self.uploader,'Choose File to Run')
self.wizard().file_name = name
class ConclusionPage(QtWidgets.QWizardPage):
...
def initializePage(self):
if hasattr(self.wizard(), 'file_name'):
self.setSubTitle(self.wizard().file_name)https://stackoverflow.com/questions/51273301
复制相似问题