一、概要
图1 软件操作界面
本软件的目的是将图片置顶显示,可以避免在处理其他工作时被其他窗口干扰,从而提高工作效率。比如:在抄图的时候,需要根据零件尺寸绘制3D图,此时需要频繁的进行窗口切换进行绘制,而使用图片置顶软件,并调整好图片的透明度即可在3D制图软件中直接绘制。
二、完整架构流程
这段代码是使用PyQt5创建的一个简单窗口应用程序的部分代码。下面是这段代码的完整架构流程:
-
创建动画:
- 创建一个属性动画
QPropertyAnimation
,目标对象是line_edit
部件,动画属性是b"geometry"
,即改变line_edit
的几何属性。 - 设置动画的持续时间为2000毫秒(2秒)。
- 定义动画的起始和结束值:起始值为
line_edit
当前的几何属性,结束值为将line_edit
的宽度增加200像素。 - 设置动画的缓动曲线为线性。
- 启动动画。
- 创建一个属性动画
-
设置定时器:
- 创建一个定时器
QTimer
。 - 将定时器的超时信号连接到
scroll_text
方法,这意味着每当定时器超时时,都会执行scroll_text
方法。 - 设置定时器的间隔为50毫秒。
- 启动定时器。
- 创建一个定时器
-
定义滚动文本方法:
- 在
scroll_text
方法中,获取line_edit
中的文本和光标位置。 - 如果光标位置等于文本长度,则将光标位置设置为0,否则将光标位置设置为下一位。
- 在
-
设置窗口位置:
- 使用
QDesktopWidget().screenGeometry()
获取屏幕的几何属性。 - 根据屏幕尺寸设置窗口的位置和大小。
- 使用
-
处理拖拽事件:
- 在
dragEnterEvent
方法中,检查拖拽事件是否有URL数据,如果有则接受该事件,否则忽略。 - 在
dropEvent
方法中,如果拖拽事件有URL数据,则获取URL并加载图片到image_label
中,并启用滑块控件。然后接受该事件。如果拖拽事件没有URL数据,则忽略该事件。
- 在
-
设置窗口不透明度:
- 在
set_opacity
方法中,根据滑块的当前值设置窗口的不透明度。如果滑块的值大于20,则窗口的不透明度设置为滑块值除以100的百分比。
- 在
-
设置窗口置顶:
- 在
set_window_on_top
方法中,如果下拉框的当前选项为"Window 1",则将窗口设置为置顶窗口。
- 在
三、完整代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023-09-10 9:46
# @Author : Leuanghing Chen
# @Blog : https://blog.csdn.net/weixin_46153372?spm=1010.2135.3001.5421
# @File : 图片置顶工具.py
# @Software : PyCharm
# pyinstaller --exclude-module EXCLUDES --onefile -F -w -i D:\python_demo\图片置顶工具\abg3u-4ef7b-001.ico D:\python_demo\图片置顶工具\图片置顶工具.py
import sys
from PyQt5.QtWidgets import QMainWindow, QLabel, QSlider, QVBoxLayout, QWidget, QApplication, QDesktopWidget, QComboBox, \
QLineEdit
from PyQt5.QtGui import QPixmap, QIcon, QFont
from PyQt5.QtCore import Qt, QEvent, QPropertyAnimation, QEasingCurve, QPoint, QRect, QTimer
class ImageWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt5 Image Tool')
self.setAcceptDrops(True)
self.image_label