怎么通过点击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?广告平台的技术架构一般是怎样子的?