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

我正在尝试使用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)


杨魅力
浏览 266回答 1
1回答

慕的地6264312

该registerField()方法具有更多参数:无效的QWizardPage :: registerField(const QString&name,QWidget * widget,const char * property = nullptr,const char * changedSignal = nullptr)因此,解决方案是表明您要获取的currentText属性QComboBox:self.registerField("projectName", comboBox, "currentText")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python