窗口设置
去掉顶部按钮
1 2 3
| from PySide2.QtCore import QFile, Qt
mainWin.setWindowFlags(Qt.FramelessWindowHint)
|
工具条
经常我们会实现显示在桌面一侧的工具条,工具条一般都是置顶的,但是如果工具条会伸展或者不规则,我们就需要窗口的透明区域能够鼠标穿透。
窗口背景透明鼠标穿透置顶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| from PySide2.QtUiTools import QUiLoader from PySide2.QtCore import QFile, Qt
class MyWin(QObject): def __init__(self): self.load_ui()
def load_ui(self): self.ui = QUiLoader().load("form.ui")
if __name__ == "__main__": app = QApplication([]) myWin = MyWin() myWin.ui.setAttribute(Qt.WA_TranslucentBackground,True); myWin.ui.setWindowFlags(Qt.FramelessWindowHint|Qt.Window|Qt.WindowStaysOnTopHint); myWin.ui.show();
sys.exit(app.exec_())
|
注意
setAttribute(Qt.WA_TranslucentBackground,True)这句主要作用就是让窗口的透明区域鼠标穿透
setWindowFlags(Qt.FramelessWindowHint|Qt.Window|Qt.WindowStaysOnTopHint)设置窗口状态
Qt.FramelessWindowHint 无边框
Qt.Window 显示在状态栏
Qt.WindowStaysOnTopHint 窗口置顶
设置窗口的属性一定要在调用show()之前
常见属性
结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。一些常用值的含义:
Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。
Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。
Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。
Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小。
Expandint:控件可以自行增大或者缩小。
注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)
窗口逻辑代码
建议是每个窗口的逻辑写在单独的文件中
zwin/main_win.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| from PySide2.QtWidgets import QWidget
from ui_form import Ui_Widget
class MainWindow(QWidget): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_Widget() self.ui.setupUi(self) self.ui.loginBtn.clicked.connect(self.on_button_clicked)
def on_button_clicked(self): print("登录!")
|
引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import sys
from PySide2 import QtCore, QtGui, QtWidgets from PySide2.QtCore import QFile, Qt from PySide2.QtWidgets import QApplication, QWidget
import resources_rc from zwin.main_win import MainWindow
if __name__ == "__main__": app = QApplication(sys.argv) qss_file = QtCore.QFile(":/qss/common.qss") if qss_file.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text): qss_style = qss_file.readAll() qss_style = str(qss_style, encoding='utf-8') qss_file.close()
app.setStyleSheet(qss_style) mainWin = MainWindow() mainWin.setWindowFlags(Qt.FramelessWindowHint) mainWin.show() sys.exit(app.exec_())
|