按下按钮创建/替换新窗口

时间:2019-09-11 19:43:16

标签: python pyqt pyqt5 qwidget qwizard

目标:

我有一个初始窗口,其中有4个选项由按钮表示。当用户单击按钮时,应清除窗口内容(例如,所有按钮均应消失),并用新内容替换(可以是另一个按钮,文本字段等)

当前代码:

import sys
import PyQt5
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import QLineEdit, QApplication, QWidget, QStackedWidget
from PyQt5.QtGui import QImage, QIcon, QPixmap, QPalette, QFont

class QWizard(QtWidgets.QWizard):
    def __init__(self):        
        super().__init__()
        self.init_window()
        self.initial_options()

    def init_window(self):
        self.app = QtWidgets.QApplication(sys.argv)
        self.setWizardStyle(QtWidgets.QWizard.ModernStyle)
        self.setWindowTitle("TILE")
        self.setMinimumSize(800,600)

        self.page1 = QtWidgets.QWizardPage()
        self.font = QFont()
        self.font.setWeight(QFont.Bold)
        self.page1.setTitle('INTRO TITLE')
        self.page1.setSubTitle('SUBTITLE')


    def initial_options(self):
        b1 = QtWidgets.QPushButton("BUTTON 1")
        b1.setFont(self.font)
        b1.setMinimumSize(100,100)
        b1.clicked.connect(self.b1_clicked)

        b2 = QtWidgets.QPushButton("BUTTON 2")
        b2.setFont(self.font)
        b2.setMinimumSize(100,100)

        b3 = QtWidgets.QPushButton("BUTTON 3")
        b3.setFont(self.font)
        b3.setMinimumSize(100,100)

        b4 = QtWidgets.QPushButton("BUTTON 4")
        b4.setFont(self.font)
        b4.setMinimumSize(100,100)

        hLayout1 = QtWidgets.QFormLayout(self.page1)

        hLayout1.addRow(b1)
        hLayout1.addRow(b2)
        hLayout1.addRow(b3)
        hLayout1.addRow(b4)

        self.addPage(self.page1)
        self.show()

    def b1_clicked(self):
        print("CLICKED BUTTON 1 - CREATE NEW/FRESH SWINDOW")
        self.b1_click = QtWidgets.QWizardPage()
        font = QFont()
        font.setWeight(QFont.Bold)
        self.b1_click.setTitle('TITLE OF NEW WINOW')
        self.b1_click.setSubTitle('DO SOMETHING IN THIS WINDOW')

        self.addPage(self.b1_click)
        self.show


App = QApplication(sys.argv)
window = QWizard()
sys.exit(App.exec())

输出:

Output generated from the code, without clicking on any button

单击按钮1时,所有按钮都将消失,标题应更改,...所有内容均应为新的。

想到了2种解决方案:

  • 用新窗口替换初始窗口(销毁它,隐藏它,...)。
  • 为每个按钮/标题创建不同的小部件,并在单击按钮时将其隐藏。我想到了QStackedWidgets / QStackedLayout,但是我在代码中实现它遇到了麻烦

0 个答案:

没有答案