前言
Qt Quick
和Qt Widgets
这两种技术,官方是强推Qt Quick
的。
https://download.qt.io/official_releases/QtForPython/
常见属性
结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。一些常用值的含义:
Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。
Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。
Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。
Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小。
Expandint:控件可以自行增大或者缩小。
注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)
加载UI的两种方式
方式1
转成代码后加载
UI文件转Python代码
1 | pyside2-uic form.ui -o ui_form.py |
显示
1 | import sys |
注意默认会报错
QLayout: Attempting to add QLayout “” to MainWindow “Widget”, which already has a layout
不要使用QMainWindow
,因为它默认已经有布局了,所以要把QMainWindow
更换为QWidget
。
方式2
默认代码
直接加载UI文件
1 | import os |
上面是工具自动生成的代码,运行时我们会发现,虽然我们设置过窗口的布局,但是页面依旧不会根据窗口缩放自动调整。
原因是
我们的UI本身就是窗口,但是
load(ui_file, self)
,这样的写法是把UI中窗口放在了当前的窗口中,当前窗口还要设置布局。
解决缩放问题
我们可以改成这样
1 | import os |
这样太麻烦了,我们可以直接用UI生成的窗口,如下:
简单写法
改成如下即可:
1 | import sys |
推荐写法
1 | import os |
窗口设置
去掉顶部按钮
1 | from PySide2.QtCore import QFile, Qt |
工具条
经常我们会实现显示在桌面一侧的工具条,工具条一般都是置顶的,但是如果工具条会伸展或者不规则,我们就需要窗口的透明区域能够鼠标穿透。
窗口背景透明鼠标穿透置顶
1 | from PySide2.QtUiTools import QUiLoader |
注意
setAttribute(Qt.WA_TranslucentBackground,True)
这句主要作用就是让窗口的透明区域鼠标穿透
setWindowFlags(Qt.FramelessWindowHint|Qt.Window|Qt.WindowStaysOnTopHint)
设置窗口状态
Qt.FramelessWindowHint
无边框Qt.Window
显示在状态栏Qt.WindowStaysOnTopHint
窗口置顶设置窗口的属性一定要在调用
show()
之前