from PyQt5.Qt import *
from pyqt5_plugins.examplebuttonplugin import QtGui
class QDou(QWidget):
def __init__(self):
super().__init__()
self.setFixedSize(300,300)
self.flag=False
self.label = QLabel('砂子', self)
self.label.resize(30, 14)
self.label.move(140,10)
self.btn=QPushButton(self)
self.btn.resize(100,30)
self.btn.move(100,260)
self.btn.setCheckable(True)
self.btn.setStyleSheet('background-color:transparent;')
self.btn.clicked.connect(self.fun)
def fun(self,state):
if state:
self.flag=True
else:
self.flag=False
self.update()
def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
pen=QPen()
pen.setColor(Qt.blue)
pen.setWidth(3)
painter.setPen(pen)
po=QPoint(39,32)
po2=QPoint(39,181)
po3=QPoint(102,260)
po4=QPoint(195,260)
po5=QPoint(258,181)
po6=QPoint(258,32)
po7=QPoint(39,32)
data=QPolygon([po,po2,po3,po4,po5,po6,po7])
painter.drawPolygon(data)
painter.setPen(Qt.red)
pie_rect=QRect(-62,82,202,202)
if self.flag:
painter.setBrush(Qt.blue)
painter.drawPie(pie_rect,-50*16,-20*16)
else:
painter.setBrush(Qt.green)
painter.drawPie(pie_rect, -60 * 16, -20 * 16)
# def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
# print(a0.pos())
# x=a0.pos().x()
# y=a0.pos().y()
# if 39<x<74 and (185<y<265):
# if a0.button()==Qt.LeftButton:
# self.flag=not self.flag
# self.update()
class Window(QWidget):
def __init__(self):
super().__init__()
self.setFixedSize(900,700)
self.dou=QDou()
self.dou.label.setText('石1')
self.dou2=QDou()
self.dou2.label.setText('石2')
self.dou3=QDou()
self.dou3.label.setText('砂1')
frame=QFrame(self)
frame.setStyleSheet("background-color:cyan")
frame.resize(self.width(),350)
layout=QHBoxLayout()
layout.addWidget(self.dou)
layout.addWidget(self.dou2)
layout.addWidget(self.dou3)
frame.setLayout(layout)
if __name__ == '__main__':
import sys
app=QApplication(sys.argv)
win=Window()
win.show()
sys.exit(app.exec_())
pyqt自定义组件
最新推荐文章于 2024-05-13 21:34:23 发布