Python 如何在PyQt/PySide中绘制四周宽度相同的圆形矩形边框轮廓?
事实上,我已经寻找这个答案有一段时间了,我以前也看到过其他帖子问过同样的问题,但我从来没有找到任何好的答案。Python 如何在PyQt/PySide中绘制四周宽度相同的圆形矩形边框轮廓?,python,pyqt,pyqt4,pyqt5,pyside,Python,Pyqt,Pyqt4,Pyqt5,Pyside,事实上,我已经寻找这个答案有一段时间了,我以前也看到过其他帖子问过同样的问题,但我从来没有找到任何好的答案。 无论如何,如果您运行我的代码,您将看到4条边的边框比轮廓的其余部分更厚。周围有没有可能有一个均匀的边界 import sys from PySide2.QtCore import Qt from PySide2.QtGui import QPainter, QPen, QColor, QBrush from PySide2.QtWidgets import QWidget, QAppli
无论如何,如果您运行我的代码,您将看到4条边的边框比轮廓的其余部分更厚。周围有没有可能有一个均匀的边界
import sys
from PySide2.QtCore import Qt
from PySide2.QtGui import QPainter, QPen, QColor, QBrush
from PySide2.QtWidgets import QWidget, QApplication
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground, True)
def paintEvent(self, event):
painter = QPainter(self)
fillColor = QColor(255, 165, 0, 180)
lineColor = QColor(0, 0, 0, 255)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(QPen(QBrush(lineColor), 2))
painter.setBrush(QBrush(fillColor))
painter.drawRoundedRect(self.rect(), 15, 15)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec_()
谢谢。试试看:
import sys
from PyQt5.QtCore import Qt, QRectF
from PyQt5.QtGui import QPainter, QPen, QColor, QBrush, QPainterPath
from PyQt5.QtWidgets import QWidget, QApplication
class MainWindow(QWidget):
BorderColor = QColor(0, 0, 0, 255)
BackgroundColor = QColor(255, 165, 0, 180)
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground, True)
def paintEvent(self, event):
super(MainWindow, self).paintEvent(event)
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
rectPath = QPainterPath()
height = self.height() - 8
rectPath.addRoundedRect(QRectF(2, 2, self.width()-4, height), 15, 15)
painter.setPen(QPen(self.BorderColor, 2, Qt.SolidLine,
Qt.RoundCap, Qt.RoundJoin))
painter.setBrush(self.BackgroundColor)
painter.drawPath(rectPath)
painter.setPen(QPen(self.BackgroundColor, 2,
Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec_()