參考
http://www.cnblogs.com/findum...
https://blog.csdn.net/goforwa...
關鍵詞
PYQT5
QWidget
paintEvent
QSS
我的沒有C的基礎, 鑑於網上教程全是c類的, 特寫下次文, 能幫到和我有相同困惑的人就好.html
from PyQt5.QtGui import QPainter from PyQt5.QtWidgets import QApplication, QWidget, \ QHBoxLayout, QStyleOption, QStyle class MyWidget(QWidget): def __init__(self, parent=None): super(MyWidget,self).__init__(parent) self.setObjectName('myWidget') self.setMinimumSize(100,60) # 重寫paintEvent 不然不能使用樣式表定義外觀 def paintEvent(self, evt): opt = QStyleOption() opt.initFrom(self) painter = QPainter(self) # 反鋸齒 painter.setRenderHint(QPainter.Antialiasing) self.style().drawPrimitive(QStyle.PE_Widget, opt, painter, self) class MyWindow(QWidget): def __init__(self, parent=None): super(MyWindow,self).__init__(parent) self.resize(400,300) layout = QHBoxLayout() # 添加自定義部件(MyWidget) self.widget = MyWidget() # 這裏能夠不要self # 放入佈局內 layout.addWidget(self.widget) self.setLayout(layout) self.setWindowTitle('使用QSS自定義QWidget樣式') if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setStyleSheet(open("./Style.qss").read()) window = MyWindow() window.show(); sys.exit(app.exec_())
Style.qssapp
#myWidget{ background: gold; border-radius: 8px ; border: 1px solid red; /* 順序不能變 */ }