pyqt 万能简易模板(三)

本文将介绍一些pyqt5基本使用技巧,不借助Qtdesigner,而是全部用代码编写,将实现页面布局、窗口自适应、字体自适应等功能。一般的简易工程均可使用,简单高效。对于pyqt5的一些基本技巧,本文内容基本够用,可以快速实现自己想要的界面。 

14、Layout自适应窗口布局

使用方式一般为:首先定义Layout的布局方式(如水平布局、垂直布局、网格布局等),然后通过addWidget可以增加标签、按钮等控件,或通过addLayout添加布局。最后一个布局调用setLayout函数即可。利用.addStretch可以设置控件之间的距离,可认为是剩余空白位置的比例。

Layout可以看作是将一些控件进行了打包和布局,形成了一个模块。进而这个模块可以通过addLayout的方式,像控件一样添加到其他布局当中。

(1)水平布局QHBoxLayout,将空间按照水平方向进行摆放。

hbox = QHBoxLayout()
hbox.addWidget(控件1)
hbox.addWidget(控件2)
hbox.addLayout(布局1)
hbox.addLayout(布局2)

(2)垂直布局QVBoxLayout,将空间按照垂直方向进行摆放,使用方式同QHBoxLayout。

(3)网格布局QGridLayout,划分成网格,按照行列布局。

grid.addWidget(控件1, 行, 列)

grid = QGridLayout()
grid.addWidget(控件1, 1, 1)
grid.addWidget(控件2, 1, 2)
grid.addLayout(布局1, 2, 1)
grid.addLayout(布局2, 2, 2)

(4)参考代码:

grid1 = QGridLayout()
grid1.addWidget(self.label1, 1, 1)
grid1.addWidget(self.label2, 1, 2)
grid1.addWidget(self.label3, 1, 3)
grid1.addWidget(self.label11, 2, 1)
grid1.addWidget(self.label12, 2, 2)
grid1.addWidget(self.text1, 2, 3)
        
grid2 = QGridLayout()
grid2.addWidget(self.btn1, 1, 1)
grid2.addWidget(self.btn2, 1, 2)
        
grid3 = QGridLayout()
grid3.addWidget(self.btn3, 1, 1)
grid3.addWidget(self.btn4, 1, 2)
grid3.addWidget(self.btn5, 1, 3)

hbox = QHBoxLayout()
hbox.addStretch(2)
hbox.addLayout(grid2)
hbox.addStretch(2)
hbox.addLayout(grid3)
hbox.addStretch(3)
        
vbox = QVBoxLayout()
vbox.addLayout(grid1)
vbox.addStretch(1)
vbox.addLayout(hbox)
vbox.addStretch(1)
        
self.setLayout(vbox)   

 15、重写resize函数

重写resizeEvent函数可自适应窗口大小,并且可以自动调整字体大小,关键是通过event.size().width()和event.size().height()函数实时获取主窗口大小。

def resizeEvent(self, event):
    #900为窗口初始尺寸
    font_size = event.size().width() * 30 // int(900 * self.scale_ratio)
    config = "QLabel{font-size:"+str(font_size)+"px;font-weight:bold;font-family:宋体;}"
    self.label1.setStyleSheet(config)
    self.label2.setStyleSheet(config)
    self.label3.setStyleSheet(config)
        
     w  = event.size().width()  * 320 // 900
     h = event.size().height() * 320 // 400
     self.label11.resize(w, h)
     self.label12.resize(w, h)
     self.text1.setFixedSize(w*200//320, h)
        
     btn_font_size = event.size().width() * 25 // int(900 * self.scale_ratio)
     config = "QPushButton{font-size:"+str(btn_font_size)+"px;font-weight:bold;font-family:宋体;}"
     self.btn1.setStyleSheet(config)
     self.btn2.setStyleSheet(config)
     self.btn3.setStyleSheet(config)
     self.btn4.setStyleSheet(config)
     self.btn5.setStyleSheet(config)

16、重写关闭窗口函数closeEvent
避免python后台在关闭窗口时仍然继续运行

def closeEvent(self, event):
    import os
    os._exit(1)

完整代码:pyqt 万能简易模板(四)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding的叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值