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
0
投稿
猜你喜欢
- 对于python2.7字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,
- 引言 性能是一个特征。您必须预先设计性能,否则您以后就得重写应用程序。就是说,有哪些好的策略可使 Active Server Pages (
- 如何用表单在线建立目录?很简单,两个文件就搞定了:creatfolder.htm' 表单文件<form n
- #!/usr/bin/python#-*-coding:utf-8-*-# JCrawler# Author: Jam <810441
- dssaa 问:求一个如奥运倒计时牌那样显示的倒计时程序突然想到这样的一个小程序,不知道能不能做,比如我要在我的主页上挂一个页面,上面只显示
- 做设计的时候,如何配色是经常让人头痛的问题,尽管很多时候,很多人都说对于色彩的掌握更多的是靠感觉,但是不得不说,感觉也是要有依据的。所以颜色
- 一、增强的可扩展性 Oracle9i Real Application Clusters是Oracle的下一代并行服务器系列产品。Oracl
- →问题提出:我用dw做了一个下拉菜单,但是碰到form的列表项就跑到下面去了,请帮忙解决,先谢谢各位了!请看问题图示如下:→解决问题:由于层
- 炸金花题目很简单:就是自己写一个程序,实现诈金花游戏的发牌、判断输赢。规则:一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。牌
- MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两
- LoadRunner监控MySQLhttp://www.docin.com/p-92272846.htmlAdvanced MySQL Pe
- 一:修改文件上传语言为PHP 打开fckconfig.js 找到: var _FileBrowserLanguage = 'asp&
- 相信有很多人有用程序向Excel导数据的需求, 且做过. 一般导出一些文本数据是很方便的, 可选方法很多, 比如拼接文本字符串存.cvs格式
- 这篇文章主要介绍了Python测试线程应用程序过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- PHP html_entity_decode() 函数实例把 HTML 实体转换为字符:<?php $str = "&
- Function Moneynm(n,m) &
- asp之家注:本文介绍的长文章分页方法不错,作者分析的很详细,用分页符来手动为长文章分页,应该是最好的长文章分页方法,我们不必担心会把一些代
- 这篇论坛文章主要介绍了Oracle数据库到SQL Server数据库主键的迁移过程,具体内容请参考下文。由于项目需要要将以前Oracle的数
- 本文实例讲述了Python简单计算文件MD5值的方法。分享给大家供大家参考,具体如下:一 代码import sysimport hashli
- 获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP我们可以使用这个类来处理图片的显示。<% Class