类似向导的用户界面,旁边和后面都有按钮

时间:2015-10-28 22:31:15

标签: python pyqt pyqt4

我正在使用Qt Designer和PyQt4开发应用程序,我需要制作几个屏幕,每个屏幕都捕获用户特定数据,为此我需要实现一个类似于<的下一个按钮和一个后退按钮/ p>

https://files.support.epson.com/htmldocs/pho825/pho825f1/images/2knhw1.gif

当前屏幕关闭,当用户点击下一步时会打开以下内容,或者如果他点击回来,屏幕会关闭并打开上一个屏幕,我只做了一个示例,只有下一个按钮然后返回示例,如果我不是明确:

from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Frm(QWidget):
    def __init__(self, parent = None):
        super(Frm, self).__init__(parent)

        next = QPushButton('Next >', self)
        back = QPushButton('< Back', self)

        hbox = QHBoxLayout()

        hbox.addWidget(back)
        hbox.addWidget(next)

        self.setLayout(hbox)

if __name__ == '__main__':
    import sys
    root = QApplication(sys.argv)
    app = Frm(None)
    app.show()
    root.exec_()

简而言之:如何实现一个调用另一个屏幕的功能,并通过点击按钮关闭当前的电流?

3 个答案:

答案 0 :(得分:4)

首先是一个误解:你通常不会创建/显示一个屏幕(窗口)并关闭另一个屏幕,通常只会在按下按钮等操作时交换类似向导的对话框窗口的内容。窗口一直处于活动状态,直到多页面任务完成。

所以我认为你的问题是关于:

如何在布局中交换小部件?

由于您仍然可以使用尚未QLayout.replaceWidget的PyQt4,因此最好只使用removeWidget的方法addWidgetQLayout以及{ {1}}在布局项列表的末尾添加了一个小部件,我更喜欢专门的布局,仅用于向导的可互换内容(另请参阅:How to add an Item to the specific index in the layout)。

使用PyQt5的示例代码,但可轻松转移到PyQt4。只实现了下一个按钮。

addWidget

它看起来像:

enter image description here

但是,正如Marius在评论中所写,使用QWizard在Qt中对此类对话进行了广泛的支持。所以我强烈建议使用它。上面的示例仅用于演示在布局中插入和删除小部件的能力。

你肯定应该使用 QWizard 来解决这些问题!

答案 1 :(得分:0)

有一个QWizard类允许您在Qt和PyQt中创建向导。它实现了您想要的所有功能,还有更多功能。您所做的只是通过扩展QWizardPage来设计您的页面,并将它们添加到向导中。这比你提出的从头开始做整件事要简单得多。

答案 2 :(得分:0)

  

老问题但缺少现有API的示例

您不需要自己创建向导的所有结构。 Qt(和PyQt)已经提供了一个名为dateText的类。

基本示例:

QWizard

完整的示例和一些说明:
https://www.youtube.com/watch?v=kTJ1QULxXjg

https://impatientprogrammer.net/2018/07/06/pyside-pyqt-qwizard-in-3-minutes/