简体   繁体   中英

PyQt5 opening new window w/ if else

I'm designing window with PyQt5 and QtDesigner. I made maindemo.py, maindemo.ui, mainfail.py, mainfail.ui.

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QGraphicsView, QLabel, QMenuBar, QMenu, QStatusBar, QAction, qApp, QMessageBox
from PyQt5 import uic, QtCore

form_class = uic.loadUiType("maindemo.ui")[0]


class OpeningWindow(QMainWindow, form_class):

    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Qomics')

        self.btn_survival.setToolTip('Survival Analysis')
        self.btn_drug.setToolTip('Drug Analysis')
        self.btn_CRISPR.setToolTip('CRISPR Analysis')
        self.btn_cellline.setToolTip('Cell Line')

        self.btn_survival.clicked.connect(self.open_SurvivalMainWindow)
        self.btn_drug.clicked.connect(self.open_DrugWindow)
        self.btn_CRISPR.clicked.connect(self.open_sgRNAWindow)
        self.btn_cellline.clicked.connect(self.open_CellLineWindow)

        actionExit = QAction('&Exit', self)
        actionExit.setShortcut('Ctrl+Q')
        actionExit.setStatusTip('Exit Application')
        actionExit.triggered.connect(qApp.quit)

        self.statusBar().showMessage('abcd')

        self.setGeometry(200, 100, 800, 530)

        self.show()

    def openSurvivalMainWindow(self):
        open_SurvivalMainWindow = SurvivalMainWindow()
        open_SurvivalMainWindow.show()

    def openDrugWindow(self):
        open_DrugWindow = DrugWindow()
        open_DrugWindow.show()

    def opensgRNAWindow(self):
        open_sgRNAWindow = sgRNAWindow()
        open_sgRNAWindow.show()

    def openCellLineWindow(self):
        open_CellLineWindow = scatterWindow()
        open_CellLineWindow.show()

above code is maindemo.py what I want to do is clicking btn_drug , btn_sgRNA , btn_cellline connects to new window(with mainfail.py , mainfail.ui )

Only btn_survival connects to the real function and other buttons connects to mainfail window.

I tried to use if, else... but I couldn't write proper code.. I wrote a code but it doesn't work.

if openSurvivalMainWindow():

else: 
   openMainFailWindow.show()

Not clear what you want, but here an example of a multi window

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QGraphicsView, QLabel, QMenuBar, QMenu, QStatusBar, QAction, qApp, QMessageBox
from PyQt5 import uic, QtCore
from PyQt5.uic import loadUiType

login, _ = loadUiType('login.ui')
registration,_ = loadUiType('registration.ui')

class Register(QMainWindow, registration):
    
    def __init__(self):
        QWidget.__init__(self)
        self.setupUi(self)
        self.pushButton_24.clicked.connect(self.adding_users)
        self.pushButton_25.clicked.connect(self.return_login)

    def return_login(self):

        self.window2 = Login()
        self.close()
        self.window2.show()

class Login(QWidget, login):
    def __init__(self):
        QWidget.__init__(self)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.Handel_Login)
        self.pushButton_2.clicked.connect(self.registrations)
        
    def registrations(self):
    
        self.window2 = Register()
        self.close()
        self.window2.show()
######
#....
######

if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    app.setStyle('Fusion')
    window =  Login()
    #window = MainApp()
    window.show()
    sys.exit(app.exec_())

With this your application will go first to the login page and if you push the button 2 you will go to the registration page and of course the log in page will be closed

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM