mac桌面时钟 浮动 (python)

浮动时钟,多地时区

app store的都要钱,于是。。。。我们让chatgpt来实现一个吧:

数字:

在这里插入图片描述

代码:

import sys
import datetime
import pytz

from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsView, QGraphicsScene, QGraphicsTextItem, QWidget, QHBoxLayout, QPushButton
from PyQt5.QtCore import QTimer, Qt, QCoreApplication
from PyQt5.QtGui import QColor, QFont, QIcon, QLinearGradient, QBrush



class ClockWidget(QGraphicsView):
    def __init__(self, timezone, location, color):
        super().__init__()

        self.scene = QGraphicsScene(self)
        self.setScene(self.scene)
        self.setGeometry(0, 0, 200, 100)  # Adjust width and height as needed

        # Add city name
        city_font = QFont("Arial", 30, QFont.Bold)
        city_text = QGraphicsTextItem(location)
        city_text.setFont(city_font)
        city_text.setDefaultTextColor(color)
        city_text.setPos(10, 10)  # Adjust position as needed
        self.scene.addItem(city_text)

        # Add digital time
        self.digital_time = QGraphicsTextItem()
        self.digital_time.setFont(QFont("Arial", 30, QFont.Bold))
        self.digital_time.setDefaultTextColor(QColor(255, 215, 0))  # Golden color
        self.digital_time.setPos(10, 50)  # Adjust position as needed
        self.scene.addItem(self.digital_time)

                # Create gradient background
        gradient = QLinearGradient(0, 0, 0, 600)
        gradient.setColorAt(0.0, QColor(0, 0, 0))  # Silver color
        gradient.setColorAt(1.0, QColor(255, 255, 255))  # White color
        self.setBackgroundBrush(QBrush(gradient))



        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update)
        self.timezone = pytz.timezone(timezone)
        self.timer.start(1000)

    def update(self):
        now = datetime.datetime.now(self.timezone)
        time = now.strftime("%H:%M:%S")  # Format time as hour:min:seconds

        # Update digital time
        self.digital_time.setPlainText(time)

        super().update()

class ClockApp(QMainWindow):
    def __init__(self):
        super().__init__()

        # Create the widget container and layout
        self.widget = QWidget()
        self.layout = QHBoxLayout()

        # Create the clock widgets
        self.clock1 = ClockWidget('Asia/Shanghai', 'Beijing', QColor(255, 255, 255))  # Red color for location
        self.clock2 = ClockWidget('Europe/Paris', 'Paris', QColor(255, 255, 255))  # Blue color for location

        # Add clocks to the layout
        self.layout.addWidget(self.clock1)
        self.layout.addWidget(self.clock2)

        # Create Exit button
        # self.exit_button = QPushButton()
        # self.exit_button.setIcon(QIcon('exit.png'))  # Path to the image file for the button
        # self.exit_button.setStyleSheet("background-color: red")
        # self.exit_button.clicked.connect(QCoreApplication.instance().quit)  # Connect button click to exit action

        # Create Exit button
        # Create Exit button
        self.exit_button = QPushButton('X')  # Add 'X' as the button text
        self.exit_button.setStyleSheet(
            "QPushButton {background-color: gray; color: white; font-weight: bold; font-size: 18px; border-radius: 15px; width: 30px; height: 30px;}"
            "QPushButton:pressed {background-color: darkred;}"
        )
        self.exit_button.setFixedSize(30, 30)  # Fix the size of the button
        self.exit_button.clicked.connect(QCoreApplication.instance().quit)  # Connect button click to exit action





        # Add Exit button to the layout
        self.layout.addWidget(self.exit_button)

        # Set layout and window properties
        self.widget.setLayout(self.layout)
        self.setCentralWidget(self.widget)
        self.setGeometry(300, 300, 500, 100)  # Adjust window size as needed
        self.setWindowFlags(Qt.FramelessWindowHint)  # Remove window bar

        # For dragging the window
        self.m_mouse_down = False
        self.m_last_pos = None

    # Mouse press event
    def mousePressEvent(self, event):
        self.m_mouse_down = True
        self.m_last_pos = event.pos()

    # Mouse move event
    def mouseMoveEvent(self, event):
        if self.m_mouse_down:
            self.move(self.pos() + (event.pos() - self.m_last_pos))

    # Mouse release event
    def mouseReleaseEvent(self, event):
        self.m_mouse_down = False

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

模拟加数字效果:

土豪金效果

代码:


import sys
import datetime
import pytz
from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsView, QGraphicsScene, QGraphicsLineItem, QGraphicsTextItem, QWidget, QHBoxLayout
from PyQt5.QtCore import QTimer, QTime, Qt, QPointF, QPoint
from PyQt5.QtGui import QColor, QTransform, QPen, QFont, QBrush, QLinearGradient

class ClockWidget(QGraphicsView):
    def __init__(self, timezone, color):
        super().__init__()

        self.scene = QGraphicsScene(self)
        self.setScene(self.scene)
        self.setGeometry(0, 0, 300, 300)

        # Define the clock hands with their colors and widths
        self.hour_hand = QGraphicsLineItem(0, 0, 0, -60)
        self.hour_hand.setPen(QPen(QColor(255, 0, 0), 5))  # Red color, width 5
        self.minute_hand = QGraphicsLineItem(0, 0, 0, -80)
        self.minute_hand.setPen(QPen(QColor(0, 255, 0), 4))  # Green color, width 4
        self.second_hand = QGraphicsLineItem(0, 0, 0, -90)
        self.second_hand.setPen(QPen(QColor(0, 0, 255), 3))  # Blue color, width 3

        for hand in [self.hour_hand, self.minute_hand, self.second_hand]:
            hand.setPos(150, 150)
            self.scene.addItem(hand)

        # Add clock ticks
        for i in range(12):
            item = QGraphicsLineItem(0, 0, 0, -100)
            item.setPos(150, 150)
            item.setPen(QPen(QColor(255, 215, 0), 2))
            item.setTransform(QTransform().rotate(i * 30))
            self.scene.addItem(item)



        # Add numbers at top, right, bottom, left positions
        font = QFont("Arial", 16)
        numbers = {'12': QPointF(150, 50), '3': QPointF(250, 150), '6': QPointF(150, 250), '9': QPointF(50, 150)}
        for number, position in numbers.items():
            text_item = QGraphicsTextItem(number)
            text_item.setFont(font)
            text_item.setPos(position)
            self.scene.addItem(text_item)

        # Add city name
        city_font = QFont("Arial", 30)
        city_text = QGraphicsTextItem(timezone)
        city_text.setFont(city_font)
        city_text.setDefaultTextColor(color)
        city_text.setPos(50, 10)  # Adjust position as needed
        self.scene.addItem(city_text)

        # Add digital time
        self.digital_time = QGraphicsTextItem()
        self.digital_time.setFont(QFont("Arial", 30, QFont.Bold))
        self.digital_time.setDefaultTextColor(Qt.black)
        self.digital_time.setPos(60, 260)  # Adjust position as needed
        self.scene.addItem(self.digital_time)

        # Create gradient background
        gradient = QLinearGradient(0, 0, 0, 600)
        gradient.setColorAt(0.0, QColor(192, 192, 192))  # Silver color
        gradient.setColorAt(1.0, QColor(255, 255, 255))  # White color
        self.setBackgroundBrush(QBrush(gradient))

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.update)
        self.timezone = pytz.timezone(timezone)
        self.timer.start(1000)

    def update(self):
        now = datetime.datetime.now(self.timezone)
        time = QTime(now.hour, now.minute, now.second)

        self.hour_hand.setTransform(QTransform().rotate(30.0 * (time.hour() + time.minute() / 60.0)))
        self.minute_hand.setTransform(QTransform().rotate(6.0 * (time.minute() + time.second() / 60.0)))
        self.second_hand.setTransform(QTransform().rotate(6.0 * time.second()))

        # Update digital time
        self.digital_time.setPlainText(time.toString())

        super().update()

class ClockApp(QMainWindow):
    def __init__(self):
        super().__init__()

        # Create the widget container and layout
        self.widget = QWidget()
        self.layout = QHBoxLayout()

        # Create the clock widgets
        self.clock1 = ClockWidget('Asia/Shanghai', QColor(255, 0, 0))
        self.clock2 = ClockWidget('Europe/Paris', QColor(0, 0, 255))

        # Add clocks to the layout
        self.layout.addWidget(self.clock1)
        self.layout.addWidget(self.clock2)

        # Set layout and window properties
        self.widget.setLayout(self.layout)
        self.setCentralWidget(self.widget)
        self.setGeometry(300, 300, 600, 350)  # Adjusts window size. Format: (x_position, y_position, width, height)
        self.setWindowFlags(Qt.FramelessWindowHint)  # Remove window bar

        # For dragging the window
        self.m_mouse_down = False
        self.m_last_pos = QPoint()

    # Mouse press event
    def mousePressEvent(self, event):
        self.m_mouse_down = True
        self.m_last_pos = event.pos()

    # Mouse move event
    def mouseMoveEvent(self, event):
        if self.m_mouse_down:
            self.move(self.pos() + (event.pos() - self.m_last_pos))

    # Mouse release event
    def mouseReleaseEvent(self, event):
        self.m_mouse_down = False

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值