您的位置:首页 > 新闻 > 会展 > 东莞做网站的联系电_东莞常平房价2023最新楼盘消息_艾滋病多久能检查出来_网站制作的基本流程

东莞做网站的联系电_东莞常平房价2023最新楼盘消息_艾滋病多久能检查出来_网站制作的基本流程

2025/7/17 13:45:30 来源:https://blog.csdn.net/SmartGridequation/article/details/146984967  浏览:    关键词:东莞做网站的联系电_东莞常平房价2023最新楼盘消息_艾滋病多久能检查出来_网站制作的基本流程
东莞做网站的联系电_东莞常平房价2023最新楼盘消息_艾滋病多久能检查出来_网站制作的基本流程

代码如下 

import sys
from math import pi, sin, cos
from PySide6.QtCore import Qt, QTimer, QTime, QPointF, QRect
from PySide6.QtGui import QPainter, QPolygonF, QColor, QRadialGradient, QFont
from PySide6.QtWidgets import QApplication, QWidget,QMainWindow,QVBoxLayoutclass AnalogClock(QWidget):def __init__(self, parent=None):super().__init__(parent)self.setWindowTitle("PySide6 时钟")self.setMinimumSize(30, 30)#self.clock = QWidget()# 设置窗口背景透明self.setAttribute(Qt.WA_TranslucentBackground)self.setStyleSheet("background: transparent;")# 初始化定时器self.timer = QTimer(self)self.timer.timeout.connect(self.update)self.timer.start(1000)  # 每秒更新一次def paintEvent(self, event):painter = QPainter(self)painter.setRenderHint(QPainter.Antialiasing)# 计算尺寸参数side = min(self.width(), self.height())center = self.rect().center()radius = (side - 20) / 2# 绘制渐变背景gradient = QRadialGradient(center, radius, center)gradient.setColorAt(0, QColor(240, 240, 240))gradient.setColorAt(1, QColor(180, 180, 180))painter.setBrush(gradient)painter.drawEllipse(center, radius, radius)# 绘制外框painter.setPen(QColor(80, 80, 80))painter.drawEllipse(center, radius, radius)painter.drawEllipse(center, radius-5, radius-5)# 移动到中心点并旋转坐标系painter.translate(center)painter.rotate(-90)  # 0度从顶部开始# 绘制小时刻度painter.setPen(QColor(60, 60, 60))for i in range(12):painter.rotate(30)painter.drawLine(int(radius*0.85), 0, int(radius*0.95), 0)# 绘制分钟刻度painter.setPen(QColor(100, 100, 100))for i in range(90):if i % 5 != 0:  # 跳过小时刻度painter.rotate(6)painter.drawLine(int(radius*0.9), 0, int(radius*0.95), 0)# 获取当前时间time = QTime.currentTime()hour = time.hour() % 12minute = time.minute()second = time.second()painter.rotate(30)# 绘制小时数字painter.setPen(QColor(40, 40, 40))font = QFont("Arial", int(radius/8), QFont.Bold)painter.setFont(font)for i in range(12):angle = i * 30 + 180 + 75  # 每小时30度x = radius * 0.75 * cos(angle * pi / 180)y = radius * 0.75 * sin(angle * pi / 180)painter.drawText(int(x - 10), int(y - 10), 36, 36,Qt.AlignCenter, str(12 if i == 0 else i))# 重置坐标系painter.resetTransform()painter.translate(center)painter.rotate(-90)# 绘制时针hour_angle = (hour + minute/60) * 30painter.setPen(Qt.NoPen)painter.setBrush(QColor(50, 50, 50))painter.save()painter.rotate(hour_angle)hour_hand = QPolygonF([QPointF(-0.02*radius, -0.02*radius),QPointF(0.02*radius, -0.02*radius),QPointF(0.05*radius, radius*0.5),])painter.drawConvexPolygon(hour_hand)painter.restore()# 绘制分针minute_angle = (minute + second/60) * 6painter.setBrush(QColor(80, 80, 80))painter.save()painter.rotate(minute_angle)minute_hand = QPolygonF([QPointF(-0.015*radius, -0.015*radius),QPointF(0.015*radius, -0.015*radius),QPointF(0.03*radius, radius*0.7),])painter.drawConvexPolygon(minute_hand)painter.restore()# 绘制秒针second_angle = second * 6painter.setPen(QColor(200, 50, 50))painter.setBrush(QColor(200, 50, 50))painter.save()painter.rotate(second_angle)painter.drawLine(0, 0, 0, -radius*0.8)painter.restore()# 绘制中心点painter.setPen(Qt.NoPen)painter.setBrush(QColor(200, 50, 50))painter.drawEllipse(QPointF(0, 0), 5, 5)# 主窗口class MainWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle("嵌入式绘图示例")# 计算中心坐标btn_width = 300btn_height = 300x = (self.width() - btn_width) // 2  # 水平居中y = self.height() * 0.75  # 垂直位置在75%处self.layout = QVBoxLayout()self.clock = AnalogClock(self)self.clock.setGeometry(x, y, btn_width, btn_height)self.clock.show()if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec())

结果如下:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com