pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
作者:wzxxtt62267018 发布时间:2023-01-28 12:58:07
标签:pyqt5,qt,designer,子窗口
1. 用qt designer编写主窗体,窗体类型是MainWindow,空白窗口上一个按钮。并转换成mainWindow.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'f.ui'
#
# Created by: PyQt5 UI code generator 5.9
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(80, 90, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
2. 用qt designer编写子窗体,窗体类型是Dialog, 空白窗口上一个按钮。并转换成childWindow.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(160, 100, 75, 23))
self.pushButton.setObjectName("pushButton")
Dialog.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) #设置窗体总显示在最上面
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.pushButton.setText(_translate("Dialog", "PushButton"))
3,编写调用程序,这个重点,
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from dust.mainWindow import *
from dust.childWindow import *
if __name__ == '__main__':
app = QApplication(sys.argv)
#实例化主窗口
main = QMainWindow()
main_ui = Ui_MainWindow()
main_ui.setupUi(main )
#实例化子窗口
child = QDialog()
child_ui = Ui_Dialog()
child_ui.setupUi(child)
#按钮绑定事件
btn = main_ui.pushButton
btn.clicked.connect( child.show )
#显示
main.show()
sys.exit(app.exec_())
4. 上面的程序只是能显示了,要想添加自定义事件,还不行,加自定义事件,有一个办法是再封装一个类,主窗体和子窗体都如此。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from dust.mainWindow import *
from dust.childWindow import *
#mainWindow
class MyMainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyMainWindow,self).__init__()
self.setupUi(self)
self.setGeometry(0, 0, 1024, 600)
self.setWindowTitle('main window')
def paintEvent(self, event):
painter = QPainter(self)
pixmap = QPixmap("./image/bg.jpg")
painter.drawPixmap(self.rect(),pixmap)
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.close()
class ChildWindow(QDialog, Ui_Dialog):
def __init__(self):
super(ChildWindow,self).__init__()
self.setupUi(self)
self.setWindowTitle('child window')
self.pushButton.clicked.connect( self.btnClick) #按钮事件绑定
def btnClick(self): #子窗体自定义事件
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MyMainWindow()
child = ChildWindow()
btn = main.pushButton #主窗体按钮事件绑定
btn.clicked.connect( child.show )
main.show()
sys.exit(app.exec_())
来源:https://blog.csdn.net/wzxxtt62267018/article/details/80897185


猜你喜欢
- 1.爬虫是什么所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,
- (1)、导库import pandas as pdfrom pandas import Series(2)、读取csv文件的两种方式#读取c
- 目录创建文件夹布局编写命令代码实际应用场景案例1:检查数据库连接是否已就绪案例2:周期性发送邮件每次在启动Django服务之前,我们都会在终
- 本文介绍了vue语法之拼接字符串的示例代码,分享给大家,具体如下。先来一行代码:<div class="swiper-sli
- 今天要给大家分享的是一款自己写的屏保程序,大学大家最头疼的就是四六级的考试了,上次考试做阅读的时候,情不自禁的发呆,想着如果我能在电脑上写一
- 这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 区别:series,只是一个一维数据结构,它由index和value组成。dataframe,是一个二维结构,除了拥有index和value
- python爬虫写起来非常快,虽然也可以用java,但是没有python来的简
- 前言栈(Stack)是一种运算受限的线性表。按照先进后出(FILO,First In Last Out)的原则存储数据,先进入的数据被压入栈
- 1.安装anaconda(anaconda内置python在内的许多package,所以不用另外下载python)可以点击下面的清华开源软件
- 本文主要给大家分享一个实战项目,通过python代码写一款我们儿时大多数人玩过的游戏---小弹球游戏。只不过当时,我们是在游戏机上玩,现在我
- 本文实例讲述了JavaScript观察者模式(publish/subscribe)原理与实现方法。分享给大家供大家参考,具体如下:观察者模式
- 本文实例讲述了Flask框架使用DBUtils模块连接数据库的操作方法。分享给大家供大家参考,具体如下:Flask连接数据库数据库连接池:D
- 1.软件环境??Windows10 教育版64位Python 3.6.3PyAV 8.0.32.问题描述??在提取视频文件的关键内容时,手动
- REST_FRAMEWORK 配置对使用 rest_framework 框架的项目来说,可以使用框架的设置来对api的访问频率进行限制RES
- 如下所示:def draw_circle(event,x,y,flags,param): global ix,iy,drawin
- Batch Normalization和Dropout是深度学习模型中常用的结构。但BN和dropout在训练和测试时使用却不相同。Batc
- 第一,两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后
- 这次我们讨论的是,区分有单选框的选项和普通的选项~~乍听起来,可能不太理解我说了什么,下面举个例子先~~1、标签的单选~~例如QQ秀的支付流
- 本文实例讲述了Python面向对象之类和实例用法。分享给大家供大家参考,具体如下:类虽然 Python 是解释性语言,但是它是面向对象的,能