Форум сайта python.su
Всех приветствую.
Наблюдается такое явление один и тот же код в PyQt и PySide работает по-разному, при этом в PySide обнаружен баг (по всей видимости баг или может я туплю).
from PyQt5.Qt import QWidget, QApplication, QComboBox #Создаем унаследованный класс от QComboBox class CComboBox(QComboBox): #Переопределяем enterEvent -> когда наводится курсор на CComboBox, то он меняет цвета def enterEvent(self, event): #Задаем стиль по css self.setStyleSheet('QComboBox{background-color: rgb(0,200,255);\ selection-background-color: rgb(0,200,255);\ color: rgb(0,63,91);}') #Переопределяем leaveEvent -> когда отводится курсор от CComboBox, то он меняет цвета def leaveEvent(self, event): #Задаем стиль по css self.setStyleSheet('background-color: rgb(255,255,255);\ selection-background-color: rgb(0,80,91);\ color: rgb(0,63,91);') class Table(QWidget): def __init__(self): super().__init__() self.window1() def window1 (self): self.setWindowTitle('Record') self.resize(339, 226) #Создаем объект класса CComboBox, который отображаем на QWidget self.toolBox = CComboBox(self) #Добавляем и пичкаем его инфой self.toolBox.addItem('Blue-Crisstal') self.toolBox.addItem('Black-White') self.toolBox.setFixedSize(120,20) self.toolBox.setCurrentIndex(0) #Стиль, который появлятся при запуске, далее уже определяется по enterEvent\leaveEvent self.toolBox.setStyleSheet('QComboBox{background-color: rgb(200,200,250);\ selection-background-color: rgb(0,80,91);\ color: rgb(0,63,91);}') if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Table() window.show() sys.exit(app.exec_())
selection-background-color
('QComboBox{background-color: rgb(0,200,255);\ selection-background-color: rgb(0,200,255);\ color: rgb(0,63,91);}')
('background-color: rgb(255,255,255);\ selection-background-color: rgb(0,80,91);\ color: rgb(0,63,91);')
Отредактировано Lestoroer (Май 11, 2016 21:54:58)
Офлайн
Ладно, тогда такой вопрос :
Как узнать, когда выпадающий список QComboBox открыт? (пользователь нажал на него и список “вывалился”)
Если он открыт, то -> возвращается True (к примеру).
Я вроде и гуглил и сам думал, что-то не смог.
Добавлено через определенное время:
Непосильная задача оказалась
Отредактировано Lestoroer (Май 12, 2016 17:35:23)
Офлайн
PySide ЕМНИП - Qt4, а PyQt5 - Qt5. разница в реализации есть. лучше используйте или то или другое
Офлайн
vic57Да использовал бы PyQt с радостью, однако, лицензирование запрещает свободное распространение, приходиться на этом PySide недоделанном сидеть.
PySide ЕМНИП - Qt4, а PyQt5 - Qt5. разница в реализации есть. лучше используйте или то или другое
Отредактировано Lestoroer (Май 13, 2016 18:49:37)
Офлайн
Lestoroerнедоделанность есть как в PyQt, так и в PySide. Лучше вам изучать непосредственно Qt - доки и примеры отличные, сборка (QtCreator) расписана от и до.
Да использовал бы PyQt с радостью, однако, лицензирование запрещает свободное распространение, приходиться на этом PySide недоделанном сидеть.
Отредактировано vic57 (Май 14, 2016 07:52:18)
Офлайн
Уже решил проблему, благодарю всех, кто хотя бы хотел помочь.
Код к сожалению не смогу выложить, ибо там такой жесткий костыль получился, что черт ногу сломит (но если кому-то будет очень нужно, кину).
Офлайн