Есть вот такой код
import sys
import sys
from datetime import datetime
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtGui import QColor, QPalette, QBrush, QPixmap, \
QPolygon, QPainter
from PyQt5.QtCore import QPoint, QTimer, Qt
from PyQt5.QtWidgets import QWidget, QApplication, QAction, QMainWindow
class Clock(QWidget):
def __init__(self):
super().__init__()
pixmap = QPixmap("clock.png").scaled(291, 291,
Qt.KeepAspectRatio, Qt.FastTransformation)
pal = self.palette()
pal.setBrush(QPalette.Normal, QPalette.Window, QBrush(pixmap))
# pal.setBrush(QPalette.Inactive, QPalette.Window, QBrush(pixmap))
self.setPalette(pal)
self.setMask(pixmap.mask())
self.checktime()
self.hourColor = QColor(127, 0, 127)
self.minuteColor = QColor(0, 127, 127, 191)
self.secondColor = QColor(127, 127, 0, 120)
self.initUI()
# quitAction = QAction("Exit", self, shortcut="Ctrl+Q", triggered=self.close)
# self.addAction(quitAction)
self.setContextMenuPolicy(Qt.ActionsContextMenu)
self.timer = QTimer()
self.timer.setInterval(1000)
self.timer.timeout.connect(self.update)
self.timer.start()
def handChange(self):
self.side = min(self.width(), self.height())
self.hand = (max(self.side / 200, 4), max(self.side / 100, 8), max(self.side / 40, 30))
self.hourHand = QPolygon([
QPoint(self.hand[0], self.hand[1]),
QPoint(-self.hand[0], self.hand[1]),
QPoint(0, -self.hand[2])
])
self.minuteHand = QPolygon([
QPoint(self.hand[0], self.hand[1]),
QPoint(-self.hand[0], self.hand[1]),
QPoint(0, int(-self.hand[2] * 1.6))
])
self.secondHand = QPolygon([
QPoint(self.hand[0], self.hand[1]),
QPoint(-self.hand[0], self.hand[1]),
QPoint(0, int(-self.hand[2] * 1.6 * 1.6))
])
def initUI(self):
self.setFixedSize(291, 291)
self.handChange()
def paintEvent(self, event):
painter = QPainter()
painter.begin(self)
self.draw(event, painter)
painter.end()
def draw(self, event, painter):
self.checktime()
painter.translate(self.width() / 2, self.height() / 2)
painter.scale(self.side / 200.0, self.side / 200.0)
painter.setPen(Qt.NoPen)
painter.setBrush(self.hourColor)
painter.save()
painter.rotate(30.0 * ((self.time.hour + self.time.minute / 60.0)))
painter.drawConvexPolygon(self.hourHand)
painter.restore()
painter.setPen(Qt.NoPen)
painter.setBrush(self.minuteColor)
painter.save()
painter.rotate(6.0 * ((self.time.minute + (self.time.second) / 60.0)))
painter.drawConvexPolygon(self.minuteHand)
painter.restore()
painter.setPen(Qt.NoPen)
painter.setBrush(self.secondColor)
painter.save()
painter.rotate(6.0 * (self.time.second))
painter.drawConvexPolygon(self.secondHand)
painter.restore()
def checktime(self):
self.time = datetime.now()
self.hour = self.time.hour
self.minute = self.time.minute
self.second = self.time.second
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.init_gui()
def init_gui(self):
self.window = QtWidgets.QWidget()
self.layout = QtWidgets.QGridLayout()
self.setCentralWidget(self.window)
self.window.setLayout(self.layout)
self.clock_widget = Clock()
self.layout.addWidget(self.clock_widget)
self.setObjectName("Form")
self.resize(825, 552)
self.listWidget = QtWidgets.QListWidget(self.window)
self.listWidget.setGeometry(QtCore.QRect(0, 340, 371, 211))
self.listWidget.setObjectName("listWidget")
self.moscow = Clock()
# self.moscow.
self.widget = QtWidgets.QWidget(self.window)
self.widget.setGeometry(QtCore.QRect(0, 10, 811, 21))
self.widget.setObjectName("widget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(self.widget)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label)
self.label_2 = QtWidgets.QLabel(self.widget)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.horizontalLayout.addWidget(self.label_2)
self.widget1 = QtWidgets.QWidget(self.window)
self.widget1.setGeometry(QtCore.QRect(370, 340, 441, 30))
self.widget1.setObjectName("widget1")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget1)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_3 = QtWidgets.QLabel(self.widget1)
self.label_3.setObjectName("label_3")
self.horizontalLayout_2.addWidget(self.label_3)
self.timeEdit = QtWidgets.QTimeEdit(self.widget1)
self.timeEdit.setObjectName("timeEdit")
self.horizontalLayout_2.addWidget(self.timeEdit)
self.widget2 = QtWidgets.QWidget(self.window)
self.widget2.setGeometry(QtCore.QRect(370, 370, 441, 91))
self.widget2.setObjectName("widget2")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget2)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.comboBox = QtWidgets.QComboBox(self.widget2)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.verticalLayout.addWidget(self.comboBox)
self.pushButton = QtWidgets.QPushButton(self.widget2)
self.pushButton.setStyleSheet("background: rgb(0, 255, 0);")
self.pushButton.setObjectName("pushButton")
self.verticalLayout.addWidget(self.pushButton)
self.pushButton_2 = QtWidgets.QPushButton(self.widget2)
self.pushButton_2.setStyleSheet("background: rgb(255, 0, 0)")
self.pushButton_2.setObjectName("pushButton_2")
self.verticalLayout.addWidget(self.pushButton_2)
self.widget3 = QtWidgets.QWidget(self.window)
self.widget3.setGeometry(QtCore.QRect(370, 460, 441, 91))
self.widget3.setObjectName("widget3")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget3)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.label_4 = QtWidgets.QLabel(self.widget3)
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.verticalLayout_2.addWidget(self.label_4)
self.timeEdit_2 = QtWidgets.QTimeEdit(self.widget3)
self.timeEdit_2.setAlignment(QtCore.Qt.AlignCenter)
self.timeEdit_2.setObjectName("timeEdit_2")
self.verticalLayout_2.addWidget(self.timeEdit_2)
self.pushButton_3 = QtWidgets.QPushButton(self.widget3)
self.pushButton_3.setObjectName("pushButton_3")
self.verticalLayout_2.addWidget(self.pushButton_3)
self.retranslateUi(self.window)
QtCore.QMetaObject.connectSlotsByName(self.window)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "Москва"))
self.label_2.setText(_translate("Form", "Гринвич"))
self.label_3.setText(_translate("Form", "Время по МСК"))
self.comboBox.setItemText(0, _translate("Form", "Мелодия 1"))
self.comboBox.setItemText(1, _translate("Form", "Мелодия 2"))
self.comboBox.setItemText(2, _translate("Form", "Мелодия 3"))
self.pushButton.setText(_translate("Form", "Добавить будильник"))
self.pushButton_2.setText(_translate("Form", "Удалить будильник"))
self.label_4.setText(_translate("Form", "Таймер"))
self.pushButton_3.setText(_translate("Form", "Установить таймер"))
if __name__ == '__main__':
app = QtWidgets.QApplication([])
win = MainWindow()
win.show()
sys.exit(app.exec_())
Проблема в том, что QPixmap не отображается, и соответственно видны только стрелки, а не весь циферблат. Подскажите пожалуйста, как решить проблему, очень хочется чтобы всё было красиво)))