【PyQt5 知识点示例代码,直击HashTable的源码

本文通过多个实例展示了PyQt5中常用的GUI元素和布局管理,包括QWidget、QPushButton、QHBoxLayout、QVBoxLayout、QGridLayout、QLCDNumber、QSlider、QLabel、QLineEdit、QInputDialog、QMenuBar、QToolBar、QStatusBar、QCheckBox等。通过这些基本组件,可以构建出复杂的图形用户界面,并理解其工作原理。
摘要由CSDN通过智能技术生成
    # 设定窗口的位置和大小

    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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值