Python实现FPS游戏红点圆心

1.将使用PySide2库创建一个简单的GUI小部件
2.显示一个居中的红色圆形。这个小部件将是一个无边框、始终置顶的窗口,并且具有半透明的背景。


 

首先,在代码中导入了所需的库,并定义了一个名为 AimWidget 的自定义窗口部件类,继承自 QWidget。在 __init__ 方法中,设置了窗口的属性(无边框和置顶显示),以及窗口的大小和位置(居中显示)。

然后,定义了 getTopLeftPoint 方法来获取窗口的左上角在屏幕中的位置,使窗口能够在屏幕中心显示。接着,重写了 paintEvent 方法,在窗口中绘制了一个红色圆形,并在圆的中心处画了一个点。

最后,在 main 函数中创建了一个 QApplication 应用对象,实例化了 AimWidget 类,并显示该窗口,最后通过 sys.exit(app.exec_()) 启动了应用程序的事件循环。

这段代码实现了一个简单的窗口应用程序,窗口中心显示一个红色圆形并标记中心点,适用于展示小型图形或指示器。可以根据实际需求对窗口样式和绘图元素进行定制和扩展。

 

import sys
from PySide2.QtWidgets import QApplication, QWidget
from PySide2.QtGui import QPainter, QColor
from PySide2.QtCore import Qt

class AimWidget(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口属性
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setAttribute(Qt.WA_TranslucentBackground)

        # 设置窗口大小和位置
        self.resize(40, 40)
        topLeftPoint = self.getTopLeftPoint()
        self.move(topLeftPoint[0], topLeftPoint[1])

    # 获取窗口显示位置(屏幕中心)
    def getTopLeftPoint(self):
        screenGeometry = app.primaryScreen().geometry()
        windowX = (screenGeometry.width() - 40) // 2
        windowY = (screenGeometry.height() - 40) // 2
        return windowX, windowY

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)  # 设置抗锯齿
        painter.setPen(QColor(255, 0, 0))  # 设置画笔颜色为红色
        size = min(self.width(), self.height()) - 10
        x = (self.width() - size) // 2
        y = (self.height() - size) // 2
        painter.drawEllipse(x, y, size, size)  # 绘制圆形

        # 计算圆的中心点
        centerX = x + size / 2
        centerY = y + size / 2

        # 在圆的中心画一个点
        painter.drawPoint(centerX, centerY)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    aimWidget = AimWidget()
    aimWidget.show()
    sys.exit(app.exec_())

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值