相关文章推荐

怎么通过点击button,来打开一个新的窗口?
是写在同一个脚本里,还是把新窗口的代码放在另一个脚本里,然后通过点击按钮来运行?

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class FirstWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.windowUI()
    def windowUI(self):
        self.setWindowTitle("Login")
        self.textfield()
        self.center()
    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())
    def textfield(self):
        QToolTip.setFont(QFont('SansSerif', 12))
        user = QLabel("User:")
        userEdit = QLineEdit()
        userEdit.setToolTip("请输入你的帐号")
        passWord = QLabel("PassWord:")
        passWordEdit = QLineEdit()
        passWordEdit.setToolTip("请输入你的密码")
        grid = QGridLayout()
        grid.setSpacing(0)
        grid.addWidget(user, 0, 0)
        grid.addWidget(userEdit, 1, 0)
        grid.addWidget(passWord, 2, 0)
        grid.addWidget(passWordEdit, 3, 0)
        empty = QLabel()
        grid.addWidget(empty, 4, 0)
        btn_logon = QPushButton("Log on")
        btn_quit = QPushButton("Quit")
        grid.addWidget(btn_logon, 5, 0, 1, 2)
        grid.addWidget(btn_quit, 6, 0, 1, 2)
        btn_logon.clicked.connect(self.onclick)
        btn_quit.clicked.connect(quit)
        self.setLayout(grid)
    def onclick(self):
        newWindow = SecondWindow()
        newWindow.show()
        newWindow.exec_()
class SecondWindow(QWidget):
    def __init__(self):
        super().__init__
        self.newWindowUI
    def newWindowUI(self):
        self.resize(300,300)
        self.move(200,200)
if __name__ == "__main__":
    App = QApplication(sys.argv)
    ex = FirstWindow()
    ex.show()
    sys.exit(App.exec_())

代码量不大的话,放一个文件就行了,要是代码比较多的话,考虑到维护的方便,还是放在2个里面比较好,这种事件的触发和界面切换一般都是用signal-slot做的,使得语义看起来非常清晰

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class FirstWindow(QWidget):
    close_signal = pyqtSignal()
    def __init__(self, parent=None):
        # super这个用法是调用父类的构造函数
        # parent=None表示默认没有父Widget,如果指定父亲Widget,则调用之
        super(FirstWindow, self).__init__(parent)
        self.resize(100, 100)
        self.btn = QToolButton(self)
        self.btn.setText("click")
    def closeEvent(self, event):
        self.close_signal.emit()
        self.close()
class SecondWindow(QWidget):
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.resize(200, 200)
        self.setStyleSheet("background: black")
    def handle_click(self):
        if not self.isVisible():
            self.show()
    def handle_close(self):
        self.close()
if __name__ == "__main__":
    App = QApplication(sys.argv)
    ex = FirstWindow()
    s = SecondWindow()
    ex.btn.clicked.connect(s.handle_click)
    ex.btn.clicked.connect(ex.hide)
    ex.close_signal.connect(ex.close)
    ex.show()
    sys.exit(App.exec_())
  • ASP.NET中UpdatePanel与jQuery同时使用所遇问题解决
  • 谈谈PHP中相对路径的问题与绝对路径的使用
  • 使用纯javascript实现经典扫雷游戏
  • 在Windows7系统中添加打印目录的简单快捷方法
  • JavaScript中Date.toSource()方法的使用教程
  • 安装KB3140743升级Win10正式版10586.122重启后会提示安装失败咋办?
  • jQuery 获取跨域XML(RSS)数据的相关总结分析
  • jquery自动将form表单封装成json的具体实现
  • javascript刷新父页面的各种方法汇总
  • 改变libvirt VM镜像的默认位置的方法
  • JavaScript使用setTimeout实现延迟弹出警告框的方法
  • Java中的private修饰符失效了?
  • 基础的WordPress插件制作教程
  • android 网络编程之网络通信几种方式实例分享
  • ASP.NET中母版页和shtml实例入门
  • PHP中error_log()函数的使用方法
  • Java中类的加载顺序剖析(常用于面试题)
  • Jquery获得控件值的三种方法总结
  • php实现与erlang的二进制通讯实例解析
  • Win10用户狂喷微软:更新日志功能还没加上去
  • 解决VS2012 Express的There was a problem sending the command to the program问题
  • Yii不依赖Model的表单生成器用法实例
  • Node.js中child_process实现多进程
  • C++俄罗斯方块游戏 无需图形库的俄罗斯方块
  • 【热门文章】
  • 电商平台,商品 同时有多人 抢购,怎么解决 并发问题?
  • 移动端点按会出现选择复制选项,怎么去阻止?
  • es6 promise 有序加载图片问题
  • vue+webpack+ES6,怎样记录滚动条的位置
  • PHP抓图图片问题
  • 混合编程是怎么实现的?它的原理是什么?
  • sql 当查询不到记录时返回的是什么
  • typecho可不可以选择缩略图的顺序
  • linux 下npm 报错
  • python实行命令日志实时输出问题。
  • 切换页面后js文件报错,找不到元素
  • 这个bootstrap带弹出菜单,把弹出菜单的值填入input框中,用jquery怎么写?
  • xcode 编写程序 和数据结构 如何导入第三方数据库 ?
  • git合并的时候合并成功但是之后文件中出现了冲突标记
  • flask一个delete键删除一条评论
  • 关于PHP的HTTP请求,$_REQUEST的KEY自动转义的问题
  • 最小代码实现WIKI的内链接
  • extjs表单中的下拉框 comobobox 手动添加空选项
  • react-router路由中传入无效的参数,如何转到404?
  • 广告平台的技术架构一般是怎样子的?
  •  
    推荐文章