pyqt向导registerfield作为字符串而不是整数

时间:2018-07-09 17:03:05

标签: python pyqt pyqt5 qwizard qwizardpage

我正在尝试使用PyQt5创建一个向导,并且正在尝试制作它,以便用户在一页上输入的输入会影响用户在下一页上看到的内容。但是,当我尝试这样做时,只会看到索引值而不是文本。

创建一个列表,然后将索引值映射到列表中的适当位置以获取字符串,似乎有点麻烦,所以有人知道PyQt是否具有更好的内置函数吗?

class IntroductionPage(QtWidgets.QWizardPage):
    def __init__(self,*args,**kwargs):
        super().__init__()
        self.setTitle("Project Name")
        self.setSubTitle("Please select one of the available projects below")
        l = get_projects() 

        comboBox = QtWidgets.QComboBox(self)
        [comboBox.addItem(i) for i in l]
        layout = QtWidgets.QGridLayout()
        layout.addWidget(comboBox)
        self.setLayout(layout)
        self.registerField("projectName",comboBox)

class TaskPage(QtWidgets.QWizardPage):
    def __init__(self,*args,**kwargs):
        super().__init__()

    # currently returns an integer and not a string
    def initializePage(self):
        self.setTitle(self.field("projectName"))


class My_Wizard(QtWidgets.QWizard):
    num_of_pages = 2
    (intro,task) = range(num_of_pages)

    def __init__(self,*args,**kwargs):
        super(My_Wizard,self).__init__(*args,**kwargs)
        self.setPage(self.intro,IntroductionPage(self))
        self.setPage(self.task,TaskPage(self))
        self.setStartId(self.intro)

1 个答案:

答案 0 :(得分:0)

registerField()方法具有更多参数:

  

无效QWizardPage :: registerField(const QString&name,QWidget * widget,const char * property = nullptr,const char * changedSignal = nullptr)

因此解决方案是指示您要获取currentText的{​​{1}}属性:

QComboBox