# 设定窗口的位置和大小
self.setGeometry(300, 300, 320, 160)
self.setWindowTitle('请单击关闭按钮')
self.show()
def closeEvent(self, event):
reply = QMessageBox.question(self, '提示信息',
'确认要关闭窗口?',
QMessageBox.Yes | QMessageBox.No,
QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if name == ‘main’:
app = QApplication(sys.argv)
w = Widget()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)布局
=====================================================================
[](https://gitee.com/vip204888/java-p7)绝对布局
-----------------------------------------------------------------------
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021033123523776.png)
强行用`move`控制位置,不推荐这么做,页面兼容性很差
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
class Widget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
qbtn1 = QPushButton('功能1', self)
qbtn1.move(50, 50)
qbtn2 = QPushButton('功能2', self)
qbtn2.move(100, 100)
qbtn3 = QPushButton('功能3', self)
qbtn3.move(150, 150)
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('绝对定位')
self.show()
if name == ‘main’:
app = QApplication(sys.argv)
w = Widget()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)盒布局
----------------------------------------------------------------------
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210331234921834.png)
`addStretch` 表示“塞入弹簧”,用来控制盒布局的周围距离(塞的特多距离特大)
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QApplication
class Widget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建两个按钮对象
okButton = QPushButton("确认")
cancelButton = QPushButton("取消")
hbox = QHBoxLayout() # 创建一个水平盒布局对象hbox
hbox.addStretch(4)
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)
hbox.addStretch(1)
vbox = QVBoxLayout() # 创建一个垂直盒布局对象vbox
vbox.addStretch(1)
vbox.addLayout(hbox) # 弹簧把hbox压到了最下面
self.setLayout(vbox) # 将vbox设置为窗口的主布局对象
self.setGeometry(300, 300, 360, 150)
self.setWindowTitle('盒布局')
self.show()
if name == ‘main’:
app = QApplication(sys.argv)
w = Widget()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)网络布局
-----------------------------------------------------------------------
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210331235438274.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_1,color_FFFFFF,t_70)
import sys
from PyQt5.QtWidgets import QWidget, QGridLayout, QPushButton, QApplication
class Widget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
grid = QGridLayout() # 创建一个网格布局grid,并将其设为窗口的主布局
self.setLayout(grid)
names = ['Cls', 'Bck', '', 'Close', # 创建20个元素的字符串列表
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+']
positions = [(i, j) for i in range(5) for j in range(4)] # 创建20个元素的元组列表
for position, name in zip(positions, names): # 循环取每个坐标和按钮名称
if name == '': # 空字符串则什么都不做
continue
button = QPushButton(name)
print(*position)
grid.addWidget(button, *position)
self.move(300, 160)
self.setWindowTitle('计算器')
self.show()
if name == ‘main’:
app = QApplication(sys.argv)
w = Widget()
sys.exit(app.exec_())
[](https://gitee.com/vip204888/java-p7)状态栏、菜单栏、子菜单、勾选菜单、右键菜单
========================================================================================
![在这里插入图片描述](ht