从另一个 QMainWindow 调用时,QMainWindow 消失
Posted
技术标签:
【中文标题】从另一个 QMainWindow 调用时,QMainWindow 消失【英文标题】:QMainWindow disappears when called from another QMainWindow 【发布时间】:2019-06-24 08:57:09 【问题描述】:这是我想在第一个窗口中导入的第二个窗口,但它会闪烁并消失。
从 PyQt5 导入 QtCore、QtGui、QtWidgets
类 Ui_MainWindow_6(对象):
def setupUi_6(self, MainWindow1):
MainWindow1.setObjectName("MainWindow")
MainWindow1.setFixedSize(462, 488)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/newPrefix/snooker1.png"),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow1.setWindowIcon(icon)
MainWindow1.setStyleSheet("QMainWindow\n"
"background-image: url(:/newPrefix/snk.jpg);\n"
"")
self.centralwidget = QtWidgets.QWidget(MainWindow1)
如果 name == "main": 导入系统
app = QtWidgets.QApplication(sys.argv)
MainWindow1 = QtWidgets.QMainWindow()
ui = Ui_MainWindow_6()
ui.setupUi_6(MainWindow1)
MainWindow1.show()
sys.exit(app.exec_())
这是我的第一个窗口:
类 Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1419, 768)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/newPrefix/snooker1.png"),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
MainWindow.setStyleSheet("QMainWindow\n"
"background-image: url(:/newPrefix/snk.jpg);\n"
"\n"
"")
MainWindow.setIconSize(QtCore.QSize(38, 38))
self.centralwidget = QtWidgets.QWidget(MainWindow)
如果 name == "main": 导入系统
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
这是我正在使用的功能:
def data(self):
MainWindow1 = QtWidgets.QMainWindow()
ui = Ui_MainWindow_6()
ui.setupUi_6(MainWindow1)
MainWindow1.show()
【问题讨论】:
请澄清:a)您使用的是QT,对吗? b) 哪个版本的 QT?编辑您的问题,添加标签。帮助社区为您提供帮助 感谢提醒我,我正在使用 pyqt5 @AlexYu 请发布一个可以证明您的问题的最小示例。 【参考方案1】:不太确定要从什么地方导入,但试试下面的例子:
main.py
from PyQt5 import QtCore, QtGui, QtWidgets
from MainWindow_1 import Ui_MainWindow
from MainWindow_6 import Ui_MainWindow_6
class Window2(QtWidgets.QMainWindow, Ui_MainWindow_6):
def __init__(self):
super().__init__()
self.setupUi_6(self)
self.btn2 = QtWidgets.QPushButton("import \n first window", self)
self.btn2.setGeometry(5, 5, 70, 70)
class Window(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
btn = QtWidgets.QPushButton("import \n second window", self)
btn.setGeometry(50, 50, 100, 100)
btn.clicked.connect(self.on_clicked_1)
def on_clicked_1(self):
self.window2 = Window2()
self.window2.btn2.clicked.connect(self.on_clicked_2)
self.hide()
self.window2.show()
def on_clicked_2(self):
self.window2.hide()
self.show()
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
MainWindow_1.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1419, 768)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("D:/_Qt/img/py-qt.png"), # ":/newPrefix/snooker1.png"
QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
MainWindow.setStyleSheet("""
QMainWindow
background-image: url(D:/_Qt/img/pyqt.jpg);
""") # url(:/newPrefix/snk.jpg)
MainWindow.setIconSize(QtCore.QSize(38, 38))
self.centralwidget = QtWidgets.QWidget(MainWindow)
MainWindow_6.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow_6(object):
def setupUi_6(self, MainWindow1):
MainWindow1.setObjectName("MainWindow")
MainWindow1.setFixedSize(462, 488)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("D:/_Qt/img/py-qt.png"), # ":/newPrefix/snooker1.png"
QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow1.setWindowIcon(icon)
MainWindow1.setStyleSheet("""
QMainWindow
background-image: url(D:/_Qt/img/cat.jpg);
""") # url(:/newPrefix/snk.jpg)
self.centralwidget = QtWidgets.QWidget(MainWindow1)
【讨论】:
以上是关于从另一个 QMainWindow 调用时,QMainWindow 消失的主要内容,如果未能解决你的问题,请参考以下文章
PyQT:如何从另一个对话框(QMainWindow)中调用对话框
在 Pyqt4 中用不同的 QMainWindow 刷新 QMainWindow