经常有人问到如何在一个主窗口中打开一个对话框,然后在确认对话框之后,开启另一个窗口进行后续操作,
要求主窗口和最终的窗口之间都能响应用户操作,也就是非模态窗口。随手写了几行代码,简要示意。

:::python
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Gui (imgui@qq.com)
# License: BSD from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys class W1(QWidget):
def __init__(self, parent=None):
super(W1, self).__init__(parent)
self.btn = QPushButton('Click1') vb = QVBoxLayout()
vb.addWidget(self.btn)
self.setLayout(vb) self.btn.clicked.connect(self.fireupWindows2) def fireupWindows2(self):
w2 = W2()
if w2.exec_():
self.w3 = W3() # 需要通过self实例化为全局变量,不加self的话,一运行就被回收,也就无法显示。
self.w3.show() class W2(QDialog):
def __init__(self, parent=None):
super(W2, self).__init__(parent) self.btn = QPushButton('Click2') vb = QVBoxLayout()
vb.addWidget(self.btn)
self.setLayout(vb) self.btn.clicked.connect(self.fireupWindows3) def fireupWindows3(self):
self.accept() class W3(QWidget):
def __init__(self, parent=None):
super(W3, self).__init__(parent)
self.resize(300, 300)
self.btn = QLabel('The Last Window') vb = QVBoxLayout()
vb.addWidget(self.btn)
self.setLayout(vb) if __name__ == "__main__":
app = QApplication(sys.argv)
w = W1()
w.show()
sys.exit(app.exec_())


oneMainWindow.py
# -*- coding:utf-8 -*- from PyQt4.QtGui import (QMainWindow, QPushButton, QApplication, 
                                     QVBoxLayout, QWidget)
from PyQt4.QtCore import (Qt, QObject, SIGNAL)
import anotherWindow
import sys class OneWindow(QMainWindow):
    def __init__(self):
        super(OneWindow, self).__init__()
        self.setGeometry(100, 100, 600, 400)
        vLayout = QVBoxLayout()
        self.button = QPushButton("OK")
        vLayout.addWidget(self.button)
        widget = QWidget()
        widget.setLayout(vLayout)
        self.setCentralWidget(widget)
        
        QObject.connect(self.button,SIGNAL("clicked()") , self.anotherWindow)
        
    def anotherWindow(self):
        print 'OK'
        self.another = anotherWindow.AnotherWindow()
        self.another.show()              #难道不是用这个show()函数吗?
    
if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = OneWindow()
    w.show()     
    app.exec_() anotherWindow.py
# -*- coding:utf-8 -*- from PyQt4.QtGui import (QMainWindow) class AnotherWindow(QMainWindow):
    def __init__(self):
        super(AnotherWindow, self).__init__()
        self.resize(400, 300)
        self.setWindowTitle("this is another window")

PyQt多窗口调用的更多相关文章

  1. 父窗口调用iframe子窗口方法

    一.父窗口调用iframe子窗口方法 1.HTML语法:<iframe name="myFrame" src="child.html"></i ...

  2. 拥有iframe页面的子父类窗口调用JS的方法,并且注意的事项

    一.前言 我页面用的是EasyUI的弹出窗口里面嵌入一个iframe.第一:父窗口打开子窗口是一个新增用户信息的iframe子页面,点击保存后,子窗口iframe则去调用父窗口的function cl ...

  3. pyqt pyside 窗口自动调整大小

    pyqt pyside 窗口自动调整大小 在QTimer中一直调整 def initTimer(self): self.resizeTimer = QtCore.QTimer(self) self.r ...

  4. winform子窗口调用父窗口的控件及方法-一般调用

    首先新建一个窗体应用程序,在项目属性中点击右键->添加->添加新项,选择Windows窗体->添加. 在Form1和Form2窗口中各添加一个按钮,并双击添加事件处理函数:     ...

  5. 如何在pyqt中通过调用 SetWindowCompositionAttribute 实现Win10亚克力效果

    亚克力效果 在<如何在pyqt中实现窗口磨砂效果>和<如何在pyqt中实现win10亚克力效果>中,我们调用C++ dll来实现窗口效果,这种方法要求电脑上必须装有MSVC.V ...

  6. JavaScript子窗口调用父窗口变量和函数的方法

    在做一个父窗口开启子窗口并且在子窗口关闭的时候调用父窗口的方法,达到局部刷新的目的. 父窗口: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  7. javascript 之 location.href、跨窗口调用函数

    location.href这个东西常常用于跳转,location既是window对象的属性,又是document对象的属性. JavaScript hash 属性 -- 返回URL中#符号后面的内容 ...

  8. window.open弹出窗口调用controller

    前台图片调用js函数 <img src='${pageContext.request.contextPath}/FlatUI/img/link.png' id='report' alt='&qu ...

  9. 怎么在父窗口调用它页面的iframe里面数据,进行操作?

    注:在服务器下操作有效果,本地无效 document.getElementById("taskdetail1").contentWindow.test(a) document.ge ...

随机推荐

  1. Qt环境搭建(Qt Creator)

    简述 上一节中介绍了如何进行Qt和Visual Studio的下载安装,随后演示了如何将Qt集成到Visual Studio中,并完成了我们第一个Qt小程序-Hello World.下面主要讲解如何利 ...

  2. MVC 中使用扩展方法

     扩展方法(Extension Method)是给那些不是你拥有.因而不能直接修改的类添加方法的一种方便的办法. 一.使用扩展方法 1.定义一个购物车的类-ShoppingCart using Sys ...

  3. 未能加载文件或程序集“XXXXXX”或它的某一个依赖项。试图加载格式不正确的程序。

    在本机WIN7机器上的WebService部署到Win2008R2上发现错误 “/”应用程序中的服务器错误. 未能加载文件或程序集“XXXXXX”或它的某一个依赖项.试图加载格式不正确的程序. 说明: ...

  4. 今天发现猎豹浏览器的一个大坑 Request.IsAuthenticated 一直为 false;另外附加原因以及临时的解决方法

    今天掉到了一个大坑里面,爬了1个多小时才发现不是代码的问题,居然是浏览器的问题… 下面是问题的发生过程 单点登陆  有2个站点  http://a.abc.com  http://b.abc.com ...

  5. [转]JavaScript 的性能优化:加载和执行

    原文链接:http://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/index.html?ca=drs- JavaScript 的性能优化: ...

  6. xcode安装app

    安装 xcode 安装 xcode command line tool 检查是否安装 在终端中运行: xcrun simctl list 如果出现所有的 Device Types,则可以进行第3步 如 ...

  7. mysql,多表的内外连接+子查询

    表: student house course 关系:student_course 多对多 student house 多对一 需求:查询房间1 的学生 都学习了什么课程 select s.s_nam ...

  8. matplotlib 绘制柱状图的几个例子

    1 error bar #!/usr/bin/env python # a bar plot with errorbars import numpy as np import matplotlib.p ...

  9. typedef 深入剖析

    typedef是一个我们常常会用到的关键字,而这个关键字有许多陷阱或者说许多不为我们深入理解的地方.很多书上都是很简单地一笔代过,并没有真正地让我们理解这个关键字.本文对其进行详细地说明.综合网络上找 ...

  10. Spring中WebApplicationContext的研究

    Spring中WebApplicationContext的研究 ApplicationContext是Spring的核 心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些 ...