#无特殊注明,所有案例只修改第一个案例的对应部分
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
# 继承QWidget,用户界面的基本控件,提供了基本的应用构造器
# 默认情况下,构造器是没有父级的,没有父级的构造器被称为窗口(window)
class Example(QWidget):
# 继承父类构造
def __init__(self):
super().__init__()
# 使用initUI()方法创建一个GUI
self.initUI()
# 初始化组件
def initUI(self):
# 设置窗口x,y坐标,宽,高
# 坐标原点在屏幕左上角,x,y为窗口左上角的坐标
self.setGeometry(300, 300, 300, 250)
# 分别设置x,y坐标,宽,高
"""
self.move(300, 300)
self.resize(300, 250)
"""
# 设置窗口标题
self.setWindowTitle('Title')
# 显示控件
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
# 进入应用的主循环中,调用exit()方法或直接销毁主控件时,主循环就会结束
sys.exit(app.exec_())
# 初始化组件
def initUI(self):
# 位置,宽高
self.setGeometry(300, 300, 300, 250)
# 标题
self.setWindowTitle('Icon')
# 设置图标
self.setWindowIcon(QIcon('cat.jpg'))
# 显示控件
self.show()
# 初始化组件
def initUI(self):
# 设置字体
QToolTip.setFont(QFont('SansSerif', 10))
# 鼠标悬停,显示提示框
self.setToolTip('This is a <b>QWidget</b> widget')
# 创建一个按钮
btn = QPushButton('Button', self)
# 设置大小,btn.sizeHint()为默认大小
btn.resize(btn.sizeHint())
# 设置坐标,以父元素左上角为原点
btn.move(50, 50)
# 鼠标悬停在按钮,显示提示框
btn.setToolTip('This is a <b>QPushButton</b> widget')
# 不注释了
self.setGeometry(300, 300, 300, 250)
self.setWindowTitle('Tooltips')
self.show()
# 注意导入QCoreApplication类
from PyQt5.QtCore import QCoreApplication
# 初始化组件
def initUI(self):
# 创建按钮
qbtn = QPushButton('Quit', self)
# 按钮初始化
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50)
# 设置按钮事件(关闭窗口)
qbtn.clicked.connect(QCoreApplication.instance().quit)
# 不注释了
self.setGeometry(300, 300, 300, 250)
self.setWindowTitle('Quit button')
self.show()
# 初始化组件
def initUI(self):
# 不注释了
self.setGeometry(300, 300, 300, 250)
self.setWindowTitle('Message box')
self.show()
# 重写closeEvent方法
# 如果关闭QWidget,就会产生一个QCloseEvent,并且把它传入到closeEvent函数的event参数中
# 改变控件的默认行为,就是替换掉默认的事件处理
def closeEvent(self, event):
# 创建一个消息框
# 参数分别代表self,标题栏,对话框,确认按钮,取消按钮,默认按钮
reply = QMessageBox.question(self, 'Message', "Are you sure to quit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
# 接收或忽略关闭信号
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
# 初始化组件
def initUI(self):
self.resize(300, 250)
self.setWindowTitle('Center')
# 调用自定义函数
self.center()
self.show()
# 自定义居中函数
def center(self):
# 获得主窗口所在的框架
qr = self.frameGeometry()
# 获取显示器的分辨率,然后得到屏幕中间点的位置
cp = QDesktopWidget().availableGeometry().center()
# 然后把主窗口框架的中心点放置到屏幕的中心位置
qr.moveCenter(cp)
# 然后通过move函数把主窗口的左上角移动到其框架的左上角
self.move(qr.topLeft())