Я пытаюсь включить QSplitter.Код прекрасно работает с точки зрения функциональности, но сам QSplitter не отображается правильно под стилем PyQt по умолчанию ... возможно, потому что он сам встроен в вертикальный разделитель.Это сбивает с толку пользователя.
Если вы раскомментируете строку (и, таким образом, меняете стиль PyQt по умолчанию), QSplitter визуализируется правильно только при наведении курсора ... однако я также не хочу этого другогоstyle.
Может ли кто-нибудь дать какие-либо рекомендации по этому вопросу?
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
hbox = QHBoxLayout(self)
L_layout = QGridLayout()
R_layout = QGridLayout()
L_widgets = QWidget()
L_widgets.setLayout(L_layout)
R_widgets = QWidget()
R_widgets.setLayout(R_layout)
topleft = QFrame()
topleft.setFrameShape(QFrame.StyledPanel)
btn1 = QPushButton('btn1')
bottom = QFrame()
bottom.setFrameShape(QFrame.StyledPanel)
textedit = QTextEdit()
L_layout.addWidget(topleft, 0, 0, 1, 1)
L_layout.addWidget(btn1, 1, 0, 1, 1)
R_layout.addWidget(textedit)
splitter1 = QSplitter(Qt.Horizontal,frameShape=QFrame.StyledPanel,frameShadow=QFrame.Plain)
splitter1.addWidget(L_widgets)
splitter1.addWidget(R_widgets)
splitter1.setStretchFactor(1,1)
splitter2 = QSplitter(Qt.Vertical)
splitter2.addWidget(splitter1)
splitter2.addWidget(bottom)
hbox.addWidget(splitter2)
self.setLayout(hbox)
#QApplication.setStyle(QStyleFactory.create('Cleanlooks'))
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QSplitter demo')
self.show()
def main():
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
РЕДАКТИРОВАТЬ: Это, очевидно, известная ошибка macOS.При просмотре в Linux полоса splitter1
выглядит так же, как splitter2
.Я оставлю эту тему открытой на случай, если кто-нибудь еще знает о подходящем обходном пути для Mac.