VMware Workstation 虚拟机若长期依赖快照,磁盘会变成「基础盘 + 多层增量盘」:
dev.vmdk
dev-000001.vmdk
dev-000002.vmdk ← 当前 .vmx 指向这里
VMware Workstation 虚拟机若长期依赖快照,磁盘会变成「基础盘 + 多层增量盘」:
dev.vmdk
dev-000001.vmdk
dev-000002.vmdk ← 当前 .vmx 指向这里
设备:Redmi AX5400,型号 RA74。
文件名:
miwifi_ra74_firmware_7937d_1.0.63.bin
产品介绍
OBS虚拟摄像头重命名 是一个免安装的 Windows 可执行程序,下载后直接运行即可使用。
它适合这些场景:
OBS Virtual Camera,想改成更像真实摄像头的名字Logitech BRIO、USB Video Device、Integrated Camera 等常见摄像头名称如果你还有其他想要的小工具、Windows 软件、自动化脚本,或者希望把某个重复操作做成一键程序,可以在评论区告诉我。需求描述得越具体越好,例如使用场景、输入内容、期望输出、是否需要图形界面、是否需要付费授权等;我会优先挑选适合做成公开工具的需求继续开发。
项目地址:https://github.com/Paper-Dragon/py-auth
基于 FastAPI 的软件授权服务,支持设备心跳校验、多产品授权策略、易支付对接、Web 管理后台,提供 Python / Go / TypeScript 三端客户端 SDK。
发布日期:2026-06-10
title="运维开发绿皮书"
desc="放置运维开发笔记、搜集、摘录、实践,保持好奇心,看文需谨慎,后果很严重!"
logo="https://www.geekery.cn/logo.svg"
link="https://www.geekery.cn/"
background="rgba(253, 230, 138, 0.15)"
# 友链申请 https://www.geekery.cn/about/friend.html
Qt(官方发音 [kju:t])是一个跨平台的C++开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序
Qt 是纯 C++ 开发的,正常情况下需要先学习C语言、然后在学习C++然后才能使用Qt开发带界面的程序
多亏了开源社区使得Qt 还可以用Python、Ruby、Perl 等脚本语言进行开发。
Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统Android、iOS, 嵌入式系统等等。可以说是跨平台的
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
app = QApplication(sys.argv)
w = QWidget()
# 设置窗口标题
w.setWindowTitle("第一个PyQt")
# 展示窗口
w.show()
# 程序进行循环等待状态
app.exec()
在Qt里面布局分为四个大类 :
直译为:盒子布局
一般使用它的两个子类QHBoxLayout 和 QVBoxLayout 负责水平和垂直布局
垂直布局示例:
import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QPushButton, QGroupBox, QMainWindow
from PyQt5.QtCore import Qt
class MyWindow(QWidget):
def __init__(self):
# 切记一定要调用父类的__init__方法,因为它里面有很多对UI空间的初始化操作
super().__init__()
# 设置大小
self.resize(300, 300)
# 设置标题
self.setWindowTitle("垂直布局")
# 垂直布局
layout = QVBoxLayout()
# 作用是在布局器中增加一个伸缩量,里面的参数表示QSpacerItem的个数,默认值为零
# 会将你放在layout中的空间压缩成默认的大小
# 下面的笔试1:1:1:2
layout.addStretch(1)
# 按钮1
btn1 = QPushButton("按钮1")
# 添加到布局器中
# layout.addWidget(btn1, Qt.AlignmentFlag.AlignTop)
layout.addWidget(btn1)
layout.addStretch(1)
# 按钮2
btn2 = QPushButton("按钮2")
# 添加到布局器
layout.addWidget(btn2)
layout.addStretch(1)
# 按钮3
btn3 = QPushButton("按钮3")
# 添加到布局器
layout.addWidget(btn3)
layout.addStretch(2)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建一个QWidget子类
w = MyWindow()
w.show()
app.exec()
一般适用于提交数据form表单。比如: 登录,注册类似的场景
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QVBoxLayout, QFormLayout, QLineEdit, QPushButton, QApplication, QWidget
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 设定当前Widget的宽高(可以拉伸大小)
# self.resize(300, 200)
# 禁止改变宽高(不可以拉伸)
self.setFixedSize(300, 150)
# 外层容器
container = QVBoxLayout()
# 表单容器
form_layout = QFormLayout()
# 创建1个输入框
edit = QLineEdit()
edit.setPlaceholderText("请输入账号")
form_layout.addRow("账号:", edit)
# 创建另外1个输入框
edit2 = QLineEdit()
edit2.setPlaceholderText("请输入密码")
form_layout.addRow("密码:", edit2)
# 将from_layout添加到垂直布局器中
container.addLayout(form_layout)
# 按钮
login_btn = QPushButton("登录")
login_btn.setFixedSize(100, 30)
# 把按钮添加到容器中,并且指定它的对齐方式
container.addWidget(login_btn, alignment=Qt.AlignRight)
# 设置当前Widget的布局器,从而显示这个布局器中的子控件
self.setLayout(container)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWindow()
w.show()
app.exec()
在Qt中,生成窗口有三种方式: QWidget | QMainWindow | QDialog
控件和窗口的父类 ,自由度高(什么都东西都没有),没有划分菜单、工具栏、状态栏、主窗口 等区域
是 QWidget的子类,包含菜单栏,工具栏,状态栏,标题栏等,中间部分则为主窗口区域
对话框窗口的基类