2017-11-21 5 views
0
で内部のウィジェットの境界線を変更

ずにQgroupboxの境界線の色を変更します。は、私はグループボックスの色の境界線を変更しようとしているが、私はやるときに、それはのように内部にもウィジェットの境界線を変更するPyQt5

が、私のようなものを取得しようとしている:

import sys 
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 

class tabdemo(QMainWindow): 
    def __init__(self): 
     super(tabdemo, self).__init__() 
     self.setGeometry(50,50,500,500) 
     self.centralWidget = QWidget() 
     self.setCentralWidget(self.centralWidget) 
     self.mainB = QVBoxLayout() 

     self.GB = QGroupBox("GroupBox") 
     self.GB.setStyleSheet("QGroupBox { border: 1px solid red;}") 
     self.GB.setFixedWidth(100) 
     self.mainHBOX = QVBoxLayout() 

     self.GB1 = QGroupBox("GroupBox1") 
     self.GB1.setFixedHeight(100) 
     self.GB2 = QGroupBox("GroupBox2") 
     self.GB2.setFixedHeight(100) 
     self.GB3 = QGroupBox("GroupBox3") 
     self.GB3.setFixedHeight(100) 
     self.mainHBOX.addWidget(self.GB1) 
     self.mainHBOX.addWidget(self.GB2) 
     self.mainHBOX.addWidget(self.GB3) 

     self.GB.setLayout(self.mainHBOX) 

     self.mainB.addWidget(self.GB) 

     self.centralWidget.setLayout(self.mainB) 





def main(): 
    app = QApplication(sys.argv) 
    ex = tabdemo() 
    ex.show() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 
:ここ enter image description here

は、私がこれまで持っているコードです。

重要な行はself.GB.setStyleSheet("QGroupBox { border: 1px solid red;}")です。それは境界線の色を変えますが、色をsubGroupboxに向かって伝播するので、私はそれを望んでいません。

誰かに解決策がありますか?

答えて

1

オブジェクトに名前を付け(GroupBox)、名前に直接スタイルシートを適用する必要があります。あなたのコードにこれを追加します。ここでは

 self.GB.setObjectName("ColoredGroupBox") # Changed here... 
     self.GB.setStyleSheet("QGroupBox#ColoredGroupBox { border: 1px solid red;}") # ... and here 

は、あなたの変更されたコードです:

import sys 
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from PyQt5.QtWidgets import * 

class tabdemo(QMainWindow): 
    def __init__(self): 
     super(tabdemo, self).__init__() 
     self.setGeometry(50,50,500,500) 
     self.centralWidget = QWidget() 
     self.setCentralWidget(self.centralWidget) 
     self.mainB = QVBoxLayout() 

     self.GB = QGroupBox("GroupBox") 
     self.GB.setObjectName("ColoredGroupBox") # Changed here... 
     self.GB.setStyleSheet("QGroupBox#ColoredGroupBox { border: 1px solid red;}") # ... and here 
     self.GB.setFixedWidth(100) 
     self.mainHBOX = QVBoxLayout() 

     self.GB1 = QGroupBox("GroupBox1") 
     self.GB1.setFixedHeight(100) 
     self.GB2 = QGroupBox("GroupBox2") 
     self.GB2.setFixedHeight(100) 
     self.GB3 = QGroupBox("GroupBox3") 
     self.GB3.setFixedHeight(100) 
     self.mainHBOX.addWidget(self.GB1) 
     self.mainHBOX.addWidget(self.GB2) 
     self.mainHBOX.addWidget(self.GB3) 

     self.GB.setLayout(self.mainHBOX) 

     self.mainB.addWidget(self.GB) 

     self.centralWidget.setLayout(self.mainB) 

def main(): 
    app = QApplication(sys.argv) 
    ex = tabdemo() 
    ex.show() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

結果がこれです:

Name widget and add stylesheet to it

+0

ありがとうございました。私は自分自身でこの解決策を見つけるとは思わない... – ymmx

関連する問題