You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Python程序制作不可调整大小、不可移动的非窗口式小型启动器?

嘿,这个需求我刚好折腾过!用PyQt5就能轻松实现你想要的「伪图片」启动器效果,完全满足不可调大小、不可移动、非窗口样式的要求,下面给你详细的步骤和代码:

实现方案:用PyQt5打造自定义图片启动器

核心思路

  • 移除窗口的边框和标题栏,让它看起来就是一张独立图片而非常规窗口
  • 锁定窗口尺寸,和启动器图片大小完全匹配,禁止用户调整
  • 禁用窗口的拖拽移动功能
  • 将目标图片绘制为窗口背景,同时让窗口透明化,避免图片外出现多余区域

具体代码实现

首先确保你已经安装了PyQt5:

pip install pyqt5

然后是完整的可运行代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPixmap, QPainter
from PyQt5.QtCore import Qt

class ImageLauncher(QWidget):
    def __init__(self, image_path):
        super().__init__()
        self.image_path = image_path
        self.init_window()

    def init_window(self):
        # 加载图片并获取原始尺寸
        pixmap = QPixmap(self.image_path)
        img_w, img_h = pixmap.width(), pixmap.height()

        # 设置窗口核心属性:无边框、背景透明、可选置顶
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        # 固定窗口大小,和图片尺寸完全一致,禁止调整
        self.setFixedSize(img_w, img_h)

    def paintEvent(self, event):
        # 将图片绘制到整个窗口区域
        painter = QPainter(self)
        pixmap = QPixmap(self.image_path)
        painter.drawPixmap(self.rect(), pixmap)

    def mousePressEvent(self, event):
        # 重写鼠标点击事件,完全禁用窗口拖拽移动
        pass

    def mouseMoveEvent(self, event):
        # 重写鼠标移动事件,彻底锁定窗口位置
        pass

if __name__ == "__main__":
    app = QApplication(sys.argv)
    # 替换成你的启动器图片路径
    launcher = ImageLauncher("your_launcher_image.png")
    launcher.show()
    sys.exit(app.exec_())

代码细节解释

  • Qt.FramelessWindowHint:直接移除窗口的标题栏和边框,让启动器看起来就是一张图片
  • setFixedSize():强制窗口大小和图片一致,用户无法拖动边缘调整尺寸
  • 重写mousePressEvent和mouseMoveEvent并留空,彻底禁用窗口的拖拽移动功能
  • Qt.WA_TranslucentBackground:让窗口背景透明,避免图片之外出现白色或灰色的多余区域

额外优化建议

  • 如果需要点击启动器图片时打开你的Python程序,可以在mousePressEvent里添加启动逻辑:
import subprocess
def mousePressEvent(self, event):
    # 启动你的目标Python程序
    subprocess.Popen(["python", "your_main_program.py"])
    # 启动后自动关闭启动器窗口
    self.close()
  • 如果想要启动器显示一段时间后自动关闭,可以添加定时器:
from PyQt5.QtCore import QTimer
# 在init_window方法末尾添加
QTimer.singleShot(3000, self.close)  # 3秒后自动关闭窗口

内容的提问来源于stack exchange,提问作者cr8f2kvi9b7gqpf1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:26:10