如何使用Python在PyQt5中绘制半圆

如何使用Python在PyQt5中绘制半圆,python,pyqt5,Python,Pyqt5,我知道你可以用抽屉画一个圆,但我怎么能画半个圆呢 这是我当前的代码,它正确显示了圆圈,但半圆不显示任何内容。有什么想法吗 class DrawImage(QtWidgets.QWidget): def __init__(self, parent): QtWidgets.QWidget.__init__(self, parent) self.move(150,50) self.setFixedSize(100,100)

我知道你可以用抽屉画一个圆,但我怎么能画半个圆呢

这是我当前的代码,它正确显示了圆圈,但半圆不显示任何内容。有什么想法吗

class DrawImage(QtWidgets.QWidget):    
    def __init__(self, parent):
        QtWidgets.QWidget.__init__(self, parent)
        self.move(150,50)
        self.setFixedSize(100,100)   
        self.startA = 5
        self.endA = 30

    def paintEvent(self, event):              #use to draw on the canvas
        paint = QtGui.QPainter()
        paint.begin(self)
        paint.setRenderHint(QtGui.QPainter.Antialiasing)
        # make a white drawing background
        paint.setBrush(QtCore.Qt.white)
        paint.drawRect(event.rect())
        paint.setPen(QtCore.Qt.black)
        paint.setBrush(QtCore.Qt.white)   
        paint.drawEllipse(QtCore.QRect(25, 25, 50, 50))    #outer circle

        paint.setPen(QtCore.Qt.yellow)
        paint.setBrush(QtCore.Qt.yellow)   
        paint.drawEllipse(QtCore.QRect(37.5, 37.5, 25, 25))   #middle circle

        paint.setPen(QtCore.Qt.white)
        paint.setBrush(QtCore.Qt.white)   
        paint.drawEllipse(QtCore.QRect(43.75, 43.75, 12.5, 12.5))   #innermost circle

        #where I am trying to implement a half circle
        r = QtCore.QRect(12.5, 12.5, 20, 20)                            #<-- create rectangle
        size = r.size()                                            #<-- get rectangle size
        r.setSize(size*10)                                         #<-- set size
        startAngle = self.startA*16                                #<-- set start angle to draw arc
        endAngle = self.endA*16                                    #<-- set end arc angle
        paint.setPen(QtCore.Qt.black)              #<-- arc color
        paint.setBrush(QtCore.Qt.yellow)   
        paint.drawArc(r, startAngle, endAngle)      

        paint.end()    
类DrawImage(qtwidts.QWidget):
定义初始化(自身,父级):
qtwidts.QWidget.\uuuuu init\uuuuuuu(self,parent)
自行移动(150,50)
自设置固定大小(100100)
self.startA=5
self.endA=30
def paintEvent(自我,事件):#用于在画布上绘制
paint=QtGui.QPainter()
画画。开始(自我)
paint.SetRenderInt(QtGui.qPaint.Antialiasing)
#画一个白色的背景
油漆.镶嵌(QtCore.Qt.白色)
paint.drawRect(event.rect())
paint.setPen(QtCore.Qt.black)
油漆.镶嵌(QtCore.Qt.白色)
油漆抽屉(QtCore.QRect(25,25,50,50))#外圆
paint.setPen(QtCore.Qt.黄色)
油漆立根刷(QtCore.Qt.黄色)
油漆抽屉(QtCore.QRect(37.5,37.5,25,25))#中间圆
paint.setPen(QtCore.Qt.white)
油漆.镶嵌(QtCore.Qt.白色)
油漆抽屉(QtCore.QRect(43.75,43.75,12.5,12.5))#最里面的圆
#我试图实现一个半圆
r=QtCore.QRect(12.5,12.5,20,20)#
QPainter.drawArc(x、y、w、h、a、alen)

绘制从(x,y)开始的矩形定义的弧,该矩形具有指定的宽度和高度以及给定的星形和展角

from PyQt5 import QtWidgets, QtCore, QtGui

class DrawImage(QtWidgets.QWidget):    
    def __init__(self):
        super(DrawImage, self).__init__()

        self.move(150,50)
        self.setFixedSize(100,100)   
        self.startA    = 5
        self.endA      = 30
        self.linewidth = 1

    def paintEvent(self, event):                                 #use to draw on the canvas
        paint = QtGui.QPainter()
        paint.begin(self)
        paint.setRenderHint(QtGui.QPainter.Antialiasing)
        # make a white drawing background
        paint.setBrush(QtCore.Qt.white)
        paint.drawRect(event.rect())        


        # +++
        paint.setPen(QtCore.Qt.red)                      
        paint.setBrush(QtCore.Qt.white)   
        paint.drawArc(15, 15, 70, 70, 0 * 16, -180 * 16)         # <-----------        


        paint.setPen(QtCore.Qt.black)
        paint.setBrush(QtCore.Qt.white)   
        paint.drawEllipse(QtCore.QRect(25, 25, 50, 50))           #outer circle

        paint.setPen(QtCore.Qt.yellow)
        paint.setBrush(QtCore.Qt.yellow)   
        paint.drawEllipse(QtCore.QRect(37.5, 37.5, 25, 25))       #  middle circle

        paint.setPen(QtCore.Qt.blue)  # white
        paint.setBrush(QtCore.Qt.white)   
        paint.drawEllipse(QtCore.QRect(43.75, 43.75, 12.5, 12.5)) #innermost circle

        #where I am trying to implement a half circle
        r = QtCore.QRect(12.5, 12.5, 20, 20)                       #<-- create rectangle
        size = r.size()                                            #<-- get rectangle size
        r.setSize(size*10)                                         #<-- set size
        startAngle = self.startA*16                                #<-- set start angle to draw arc
        endAngle = self.endA*16                                    #<-- set end arc angle
        paint.setPen(QtGui.QPen(QtGui.QColor('#000000'), self.linewidth))   #<-- arc color
        paint.setBrush(QtCore.Qt.yellow)   
        paint.drawArc(r, startAngle, endAngle)      

        paint.end()    

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = DrawImage()
    w.show()
    sys.exit(app.exec_())
从PyQt5导入QtWidgets、QtCore、QtGui
类DrawImage(qtwidts.QWidget):
定义初始化(自):
超级(DrawImage,self)。\uuuuu init\uuuuuuuu()
自行移动(150,50)
自设置固定大小(100100)
self.startA=5
self.endA=30
self.linewidth=1
def paintEvent(自我,事件):#用于在画布上绘制
paint=QtGui.QPainter()
画画。开始(自我)
paint.SetRenderInt(QtGui.qPaint.Antialiasing)
#画一个白色的背景
油漆.镶嵌(QtCore.Qt.白色)
paint.drawRect(event.rect())
# +++
绘制设置笔(QtCore.Qt.red)
油漆.镶嵌(QtCore.Qt.白色)
绘制弧(15,15,70,70,0*16,-180*16)#