PySide6开发日记(一)
前言
今年早些时候,为国产读书书摘记录软件做了一个api导入程序,第一版发布后有两个用户,但后面就没关注这个程序了,半个月之前其中一位用户向我询问能否为程序增加一些新的功能,就此我开始程序v0.2版本的开发。
程序名字是《merpyzf_pyside6》,顾名思义,技术栈是PySide6,于是继续一边学习一边写新功能,目前来看新版本开发会持续几周,索性就当作周记,每周记录自己的学习心得。
笔记一:程序的顶部状态栏
1. 隐藏系统状态栏
虽然暂时没有打算做Mac OS和Linux版本,但是Windows的系统UI已经让我大为不爽了,于是开始研究无边框模式,搜到了许多教程,但实测下来能用的确实都有各种各样的问题。
最后连带AI和各种资料总算是写出了我需要的代码。
1 | from PySide6.QtCore import * |
核心部分就是setWindowFlag。起初我在网络上查找相关代码时看到了许多教程,但是当我尝试导入Qt时,显示在QtCore、QtGui类下都存在Qt库,便一直没能成功,最后索性使用*进行导入。
2. 设置最大化,最小化以及关闭程序按钮,并放置在合适的位置
三个按钮很好搞定,QPushbutton+icon属性就搞定了。
我想到可以用菜单栏用于放置它们,PySide6中当然也有相关的功能,QToolBar组件。
于是第一版程序很快就写出来了:
1 | from PySide6.QtGui import * |
运行效果:
3 窗口拖动
隐藏窗口一时爽,隐藏以后动不了,当我发现窗口开始变得不能移动后人都傻掉了,只好开始寻找方法。
处理方法也不难,当我发现PySide6中存在三个函数(mousePressEvent、mouseMoveEvent、mouseReleaseEvent)后,这件事就变得简单起来。
1 | from PySide6.QtGui import * |
不过今天在写博客时,我发现了一个新的办法,不需要重写这三个方法,看起来更加的简洁实用:
1 | from PySide6.QtGui import * |
其实核心部分只有以下两点:
1 | def move_title_bar(self, event): |
1 | toolbar.mouseMoveEvent = window.move_title_bar |
不仅实现了移动,而且只有光标在toolbar上时才会执行,更加符合使用习惯了吧哈哈哈。
未完事项
- 实现拖动边框进行窗口的大小设置;