PyQt5打开新窗口w / if else
Posted
技术标签:
【中文标题】PyQt5打开新窗口w / if else【英文标题】:PyQt5 opening new window w/ if else 【发布时间】:2020-08-20 05:22:21 【问题描述】:我正在使用 PyQt5 和 QtDesigner 设计窗口。我做了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()
上面的代码是maindemo.py
我想要做的是点击btn_drug
,btn_sgRNA
,btn_cellline
连接到新窗口(@987654326@,mainfail.ui
)
只有btn_survival
连接到真正的功能,其他按钮连接到mainfail窗口。
我尝试使用 if,else... 但我无法编写正确的代码.. 我写了一个代码,但它不起作用。
if openSurvivalMainWindow():
else:
openMainFailWindow.show()
【问题讨论】:
一个问题是您将按钮信号连接到self.open_SurvivalMainWindow
等名称中带有下划线,但实际方法的名称中没有下划线。
【参考方案1】:
不清楚你想要什么,但这里是一个多窗口的例子
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_())
这样,您的应用程序将首先进入登录页面,如果您按下按钮 2,您将进入注册页面,当然登录页面将被关闭
【讨论】:
以上是关于PyQt5打开新窗口w / if else的主要内容,如果未能解决你的问题,请参考以下文章