为了实现点击按钮关闭窗口并打开新窗口,一开始对原窗口使用self.close()和new_window.show()的方式,新的窗口的GUI会被立即销毁。
self.pushButton.clicked.connect(self.close_dialog)
def close_dialog(self):
self.close()
new_window = NewWindow()
new_window.show()
改用self.hide()和self.new_window.show()后实现需求。
self.pushButton.clicked.connect(self.close_dialog)
def close_dialog(self):
self.hide()
self.new_window = NewWindow()
self.new_window.show()
为了实现点击按钮关闭窗口并打开新窗口,一开始对原窗口使用self.close()和new_window.show()的方式,新的窗口的GUI会被立即销毁。#... self.pushButton.clicked.connect(self.close_dialog) def close_dialog(self): self.close() new_window = NewWindow() new_window.show()#..
其中主
窗口
是新建-Main Window,子
窗口
是Dialog窗体。
两个
窗口
不能是同一类型,否则会崩溃。
并保存为EyeTracking_main.ui和EyeTracking_process.ui(因为我在做眼动追踪,因此窗体命名与此相关,后同),使用UIC工具转成.py文件。
2.写
一个
驱动函数调用两个窗体
主窗体Eyetracking_main.py
from
PyQt
5 import
Qt
Core,
Qt
Gui,
Qt
Widgets
class Ui_MainWindow(o
2.使用PyUIC将.ui文件转换成.py文件
右键.ui文件->External Tools->PyUIC
3.新建
一个
**.py文件,大部分操作函数在**.py文件中,防止重新设计
窗口
时造成大量代码丢失
4.**.py文件
#-*- coding:utf-8 -*-
from
PyQt
5.
Qt
Widgets import QMainWindow, QApplication
from Asimplewindow import Ui_MainWindow
import sys
class Main(
PyQt
5
关闭
主
窗口
的同时
关闭
所有子
窗口
重写相关控件的父类的closeEvent()方法即可. 示例代码如下:
重写QMainWindow类的closeEvent()方法
import sys
from
PyQt
5.
Qt
Widgets import (QMainWindow, QPushButton, QApplication,
QWidget, QMessageBox)
from
PyQt
5.
Qt
Core import (QCoreApplic
在
qt
designer中设计好两个
窗口
之后,在pycharm进行编译,生成两个py文件。
给主
窗口
的py文件导入:from “你的副
窗口
文件名” import “你的副
窗口
对象名”
在retranslateUi函数,你要按的按钮下添加: self.pushButton.clicked.connect(self.popWindow)
再写
一个
popwindow函数:
def popWind...
```
python
import sys
from
PyQt
5.
Qt
Widgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout
class FirstWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('First Window')
self.setGeometry(100, 100, 300, 200)
self.label = QLabel('This is the first window', self)
self.label.move(50, 50)
self.button = QPushButton('Open Second Window', self)
self.button.move(50, 100)
self.button.clicked.connect(self.open_second_window)
def open_second_window(self):
self.hide()
second_window = SecondWindow(self)
second_window.show()
class SecondWindow(QWidget):
def __init__(self, parent):
super().__init__()
self.parent = parent
self.initUI()
def initUI(self):
self.setWindowTitle('Second Window')
self.setGeometry(100, 100, 300, 200)
self.label = QLabel('This is the second window', self)
self.label.move(50, 50)
self.button = QPushButton('Close Window', self)
self.button.move(50, 100)
self.button.clicked.connect(self.close_window)
def close_window(self):
self.close()
self.parent.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
first_window = FirstWindow()
first_window.show()
sys.exit(app.exec_())
在这个例子中,我们创建了两个
窗口
,第
一个
窗口
包含
一个
标签和
一个
按钮,点击按钮将
打开
第二个
窗口
。第二个
窗口
包含
一个
标签和
一个
关闭
按钮,点击
关闭
按钮将
关闭
第二个
窗口
并显示第
一个
窗口
。