kvadratмне кажеться все это фигня.
хотя припоминается какой-то проект, где вроде питон компилировался в js на клиенте прям, или что-то вроде этого. название не помню
На хабре недавно закидали даже coffescript, а про остльной сурогат я молчу
kvadratмне кажеться все это фигня.
хотя припоминается какой-то проект, где вроде питон компилировался в js на клиенте прям, или что-то вроде этого. название не помню
4kpt
PyQt платный :)
cutwaterтакая как и в Qt.
У PyQt двойное лицензирование, под GPL и коммерческая лицензия.
Начиная с версии 4.5 Qt распространяется по 3 лицензиям (независимо от лицензии, исходный код Qt один и тот же):
Qt Commercial — для разработки ПО с собственнической лицензией, допускающая модификацию самой Qt без раскрытия изменений;
GNU GPL — для разработки ПО с открытыми исходниками, распространяемыми на условиях GNU GPL;
GNU LGPL — для разработки ПО с собственнической лицензией, но без внесения изменений в Qt.
# ... comboBox = QComboBox(parent) treeView = QTreeView(comboBox) treeModel = YourFunnyTreeModel() comboBox.setView(treeView) comboBox.setModel(model) # ...
class TreeBox(QComboBox): skipHidePopupFlag = False def __init__(self, parent, model): super(TreeBox, self).__init__(parent) # внедряем дерево в выпадающий список self.treeView = QTreeView(self) self.setModel(model) self.setView(self.treeView) # ставим фильтр сообщений для рабочей области выпадающего списка self.view().viewport().installEventFilter(self) def eventFilter(self, object, event): # если событие мыши и произошло оно в рабоей области: if event.type() == QEvent.MouseButtonPress and object == self.view().viewport(): # получаем индекс модели по точеке index = self.view().indexAt(event.pos()) # получаем область отрисовки по индексу модели rect = self.view().visualRect(index) # горизонтальная инверсия прямоугольника (может это и криво), # все, что слева, включая "плюсик" разворачивания rect.setRight(rect.left()) rect.setLeft(0) # если клик слева значения - ставим флаг блокировки скрытия if rect.contains(event.pos()): self.skipHidePopupFlag = True return False def hidePopup(self): if self.skipHidePopupFlag: self.skipHidePopupFlag = False else: super(TreeBox, self).hidePopup()