我正在使用Qt Designer和PyQt4开发应用程序,我需要制作几个屏幕,每个屏幕都捕获用户特定数据,为此我需要实现一个类似于<的下一个按钮和一个后退按钮/ p>
当前屏幕关闭,当用户点击下一步时会打开以下内容,或者如果他点击回来,屏幕会关闭并打开上一个屏幕,我只做了一个示例,只有下一个按钮然后返回示例,如果我不是明确:
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_()
简而言之:如何实现一个调用另一个屏幕的功能,并通过点击按钮关闭当前的电流?
答案 0 :(得分:4)
首先是一个误解:你通常不会创建/显示一个屏幕(窗口)并关闭另一个屏幕,通常只会在按下按钮等操作时交换类似向导的对话框窗口的内容。窗口一直处于活动状态,直到多页面任务完成。
所以我认为你的问题是关于:
如何在布局中交换小部件?
由于您仍然可以使用尚未QLayout.replaceWidget
的PyQt4,因此最好只使用removeWidget
的方法addWidget
和QLayout
以及{ {1}}在布局项列表的末尾添加了一个小部件,我更喜欢专门的布局,仅用于向导的可互换内容(另请参阅:How to add an Item to the specific index in the layout)。
使用PyQt5的示例代码,但可轻松转移到PyQt4。只实现了下一个按钮。
addWidget
它看起来像:
但是,正如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/