安装

  1. 清华镜像源
1
https://pypi.tuna.tsinghua.edu.cn/simple/

因为python默认使用的是外国的源

我们打开Pycharm,找到设置里面的库

打开管理库,然后将清华源导入进去即可

QT设计师

pyside6-designer.exe

这个是QT的设计软件,可以进行一个可视化设计我们的应用

UI文件转化成Python文件

1
PySide6-uic UI名 -o 生成的Python名

.qrc转化成.py(pyqt5)

1
pyrcc5 qrc文件名 -o 生成的python

.qrc转化成.py(pyside6)

1
pyside6-rcc qrc文件名 -o 生成的python

初始化UI的Python文件

首先我们要导入我们的UI

1
from 文件名 import 类名

继承

1
2
3
4
5
class MainWindow(QMainWindow):  # QMainWindow是QT中的一个类
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_Login_MainWindow() # 实例化
self.ui.setupUi(self) # 导入UI

QT三大窗口

dialog

dialog有exec函数,如果是dialog窗口,后边的窗口时不可选的;这个dialog窗口只是为了给人们提供更好的可视化操作,但是对于程序员而言,这个操作并不是立刻执行的;而是当在窗口选择关闭后,才将选择的结果返回给后台,后台才可以根据选择的结果进行相应的操作。

Widget

widget主要是在上面放置布局和控件;所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

  • widget和dialog都有show函数,如果通过这个函数显示这两种类型的窗口,则两个窗口都是可选的;

MainWindow

mainwindow可以有menu菜单、tool工具栏、status状态栏、电脑显示屏右下脚的托盘等。提供更好的可视化操作;一个正常window软件呈现给客户的可视化界面。

常用指令

隐藏主界面(MainWindow)的边框和背景

1
2
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)

控件

1. PushButton

  • PushButton执行函数
1
2
self.ui.PushButton.clicked.connect(函数名)
点击按钮执行函数

常见报错

This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem

解决方法:

编辑环境变量,添加用户变量 QT_QPA_PLATFORM_PLUGIN_PATH

找到 ./plugins/platfrom 这个文件,然后编辑进用户变量就行

无法加载图片

情况

在已经加载qrc文件资源目录路径是正确的情况下,运行程序,无法显示图片(png类型),我不清楚其他类型的会不会不显示,但是我使用png无法显示,然后经过我在网上查询找到了解决方法。

作者说是aconda路径的问题,我们要自己手动添加,下面是解决方法和原作者。

解决方法

1
app.addLibraryPath(os.path.join(os.path.dirname(QtCore.__file__), "plugins"))

作者连接

1
https://blog.csdn.net/Kyrotex/article/details/119153266

参考资料

事件

鼠标(MouseButton)

PySide6.QtCore.Qt.MouseButton

Qt.LeftButton The left button is pressed, or an event refers to the left button. (The left button may be the right button on left-handed mice.)
Qt.RightButton The right button.
Qt.MiddleButton The middle button.

假如我现在有一个视窗,我在视窗中点了左键,那么就要用到这个了

1
2
3
4
5
def mousePreeEvent(self, event):
if event.button() == Qt.LeftButton:
x = event.global()
y = event.global()
QGraphicsView.scene.addItem(Item(x,y,w,h))