我是靠谱客的博主 含蓄金针菇,最近开发中收集的这篇文章主要介绍python使用qt自定义子窗口_pyqt5对用qt designer设计的窗体实现弹出子窗口的示例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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_())

最后

以上就是含蓄金针菇为你收集整理的python使用qt自定义子窗口_pyqt5对用qt designer设计的窗体实现弹出子窗口的示例的全部内容,希望文章能够帮你解决python使用qt自定义子窗口_pyqt5对用qt designer设计的窗体实现弹出子窗口的示例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部