Найти - Пользователи
Полная версия: Простой интерфейс для питона. Ищу
Начало » GUI » Простой интерфейс для питона. Ищу
1 2 3
Singularity
kvadrat
хотя припоминается какой-то проект, где вроде питон компилировался в js на клиенте прям, или что-то вроде этого. название не помню
мне кажеться все это фигня.
На хабре недавно закидали даже coffescript, а про остльной сурогат я молчу
cutwater
4kpt
PyQt платный :)

Не вводите людей в заблуждение. У PyQt двойное лицензирование, под GPL и коммерческая лицензия. Проблема именно в том что это GPL а не LGPL или другие более свободные лицензии. Собственно это и есть основное отличие от PySide.
Singularity
cutwater
У PyQt двойное лицензирование, под GPL и коммерческая лицензия.
такая как и в Qt.

Это если я хочу сделать платную программу с Qt надо платить за Qt и PyQt или просто за
Qt если использовать PySide.
Верно ?
ZZZ
http://ru.wikipedia.org/wiki/Qt
Начиная с версии 4.5 Qt распространяется по 3 лицензиям (независимо от лицензии, исходный код Qt один и тот же):
Qt Commercial — для разработки ПО с собственнической лицензией, допускающая модификацию самой Qt без раскрытия изменений;
GNU GPL — для разработки ПО с открытыми исходниками, распространяемыми на условиях GNU GPL;
GNU LGPL — для разработки ПО с собственнической лицензией, но без внесения изменений в Qt.
4kpt
ZZZ
Спасибо. Более полного ответа и ожидать было трудно.
Единственный вопрос. Что значит “без внесения изменений в Qt.”?
Gennady
4kpt, ничего подобного. Хотя по мелочи проблемы бывают, но можно ли на PySide списывать? Вот, например:

# ...
comboBox = QComboBox(parent)
treeView = QTreeView(comboBox)
treeModel = YourFunnyTreeModel()
comboBox.setView(treeView)
comboBox.setModel(model)
# ...

Будут сложности с разворачиванием ветвей, видимо, нужно перегружать обработчик мыши. Проблема? С одной стороны. С другой — такую фичу и с такой простотой использования где еще увидишь?
4kpt
Да пользуйтесь, я не против :)
Что значит: нужно всего лишь перезагрузить обработчик мыши?
Костыльное программирование в GUI не для меня :)
Gennady
4kpt, как раз решил эту проблему google не подкинул вменяемых решений, посему, пользуясь случаем, реализация дерева в выпадающем списке:

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()

Однако, даже в этом случае индекс все же выбирается, и QComboBox генерирует currentIndexChanged
ZZZ
4kpt, это значит, что перед компиляцией Qt, нельзя залезть в исходники и что-нить там нахимичить. Ну я так думаю…

P.S. Хоть плюсик бы кто-нить поставил?.. :-P
ZerG
Если QT - это “просто” (по сравнению с другими вариантами ) то мне даже и сказать нечего
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB