首先在Qt Designer
中
创建
一个
主
窗口
和
一个
对话框子
窗口
,如下图所示:
设计完成后,转换成两个py文件,对于两个分开的文件实现子
窗口
的调用,我看了一些资料,基本都是新建
一个
文件然后实现显示
主
窗口
以及调用子
窗口
,不是我想要的,所以在下面给出我的实现方法,就在
主
窗口
一个
文件
中
实现。
首先在
主
窗口
文件
中
导入子
窗口
的文件,以及创建
一个
子
窗口
类初始化
窗口
,代码如下:
from ChildWindow...
#
PyQt5
点击
按钮
弹出
自定义
窗口
创建
新窗口
1. 创建 QPushButton 按钮并绑定
点击
事件函数;
2.
点击
按钮时创建自己定义的
窗口
类对象并显示;
3. 包含两个例程,分别为只能
弹出
一个
窗口
和可以反复
点击
按钮创建无限个
窗口
的代码。
子
窗口
闪现:
当对某一
窗口
的按钮绑定事件后,
点击
该按钮,我的本意是想要通过
点击
按钮来创建
一个
子
窗口
并将其显示(但是出现了闪现)——我将创建子
窗口
和子
窗口
显示都放在
一个
触发
事件当
中
。(导致闪现问题的代码如下)
错误代码:
#
弹出
划分区域
窗口
(绑定方法)
def showPic(self):
//这是子
窗口
中
用来创建
窗口
对象的
labelWin = MyWindow2()
labelWin.show()
但是让我疑惑的是,无论怎么
点击
按钮,虽然会
触发
绑定事件但是子
class AWindow(QDialog, ui_Dialog_A): # 如果
窗口
A是QDialog类的继承QDialog类,如果是# #QMainWindow类的继承QMainWindow类。
本文实现了
PyQt5
个各种
弹出
窗口
:输入框、消息框、文件对话框、颜色对话框、字体对话框、自定义对话框
其
中
,为了实现自定义对话框的返回值,使用了信号/槽
本文基于 windows 7 +
python
3.4
取得
弹出
窗口
的返回值
全部代码:
from
PyQt5
.QtWidgets import *
from
PyQt5
.QtCore import Qt,
pyqt
Signal, QTimer
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTi
from
PyQt5
.QtWidgets import QApplication, QMainWindow, QDialog, QPushButton
import sys
2.创建
主
窗口
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 400, 300)
self.setWindowTitle('Main Window')
self.pushButton = QPushButton('Open Dialog', self)
self.pushButton.move(150, 150)
self.pushButton.clicked.connect(self.openDialog)
3.创建另
一个
窗口
class Dialog(QDialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(200, 200, 200, 200)
self.setWindowTitle('Dialog')
4.在
主
窗口
中
,创建
一个
按钮,并将其与打开另
一个
窗口
的函数连接
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(100, 100, 400, 300)
self.setWindowTitle('Main Window')
self.pushButton = QPushButton('Open Dialog', self)
self.pushButton.move(150, 150)
self.pushButton.clicked.connect(self.openDialog)
def openDialog(self):
self.dialog = Dialog()
self.dialog.exec_()
5.在
主
函数
中
,实例化
主
窗口
并显示
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
以上代码
中
,
点击
主
窗口
中
的按钮,会
弹出
另
一个
窗口
。在这个例子
中
,我们使用了QDialog类来创建另
一个
窗口
。