python 的 pickle 模块是一个用于序列化和反序列化 Python 对象结构的模块。它能够将对象转换成一个字节流(pickle 序列),以便可以将其存储在文件中或通过网络传输,之后可以恢复成原始对象。 基础用法 # 要序列化的对象 data = { 'a': [1, 2.5, 3, 4+4j], 'b': ("string", b'byte string'), 'c': {None, True, False} } # 序列化(保存对象到文件) with open('data.pickle', 'wb') as f: pickle.dump(data, f) # 反序列化(从文件加载对象) with open('dat
import os import re from PySide2.QtGui import QCursor, QIcon from PySide2.QtWidgets import QVBoxLayout, QLabel, QDialog, QPushButton, QHBoxLayout, QFrame from PySide2.QtCore import Signal, Qt, QTimer, QPoint, QSize class DesktopLyrics(QDialog): def __init__(self, lyrics_path='', parent=None): super().__init__() self.parent = pa
支持无限滚动加载数据、1秒内只能加载一次数据(根据需要设置) from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QScrollArea, QLabel from PySide2.QtCore import Qt, QTimer class MyWidget(QWidget): def __init__(self): super().__init__() # 标记是否可以更新数据 self.can_update_data = True # 加载数据间隔(即多少毫秒内只能加载一次数据) self.update_da
1、使用QThread进行多线程处理 创建一个继承自QThread的类,在这个类中重写run方法来执行网络请求。然后创建该类的实例,并使用start方法来触发线程,从而在后台执行网络请求,然后使用信号和槽机制将结果从工作线程传递回主线程,从而更新UI。这样可以避免网络请求阻塞主线程的UI渲染。 import sys import requests from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget from PySide2.QtCore import QThread, Signal class Worker(QThread): # 定义
import threading import time from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class __FileWatchdog(FileSystemEventHandler): def on_modified(self, event): print(f'文件被修改: {event.src_path}') def on_created(self, event): print(f'文件被创建: {event.src_path}') def on_deleted(self, event)
# 移动窗口的中心点到指定坐标 def move_to_point(self, x, y): # 获取窗口当前的几何信息 frame_geometry = self.frameGeometry() # 计算新的左上角位置,以使窗口中心位于 (x, y) target_top_left = QPoint(x - frame_geometry.width() // 2, y - frame_geometry.height() // 2) # 移动窗口到新的左上角位置 self.move(target_top_left)
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel from PySide2.QtCore import QTimer from PySide2.QtGui import QMouseEvent class MyWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.initUI() # 初始化两个定时器 self.enter_timer = QTimer() self.leave_timer = QTimer
from PySide2.QtWidgets import QApplication, QFrame, QMenu, QAction, QVBoxLayout, QWidget class MyFrame(QFrame): def __init__(self, parent=None): super().__init__(parent) def contextMenuEvent(self, event): # 创建上下文菜单 context_menu = QMenu(self) # 添加刷新按钮 refresh_action = QAction("刷新", self) refr
import sys from io import BytesIO import requests from PySide2.QtCore import Qt, QTimer, Signal from PySide2.QtGui import QPainter, QPixmap, QPainterPath from PySide2.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton class AlbumRotatingIcon(QWidget): album_clicked = Signal(str) def __init__(self, parent=None, bg_img_path='',
import sys from PySide2.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget from PySide2.QtGui import QMovie, QIcon from PySide2.QtCore import QSize, QTimer class CircularRefreshButton(QPushButton): def __init__(self, gif_path, parent=None): super().__init__(parent) # 初始化 QMovie self.movie = QMovie(gif_path)