Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Простой интерфейс для питона. Ищу [RSS Feed]

#1 Окт. 3, 2013 08:52:02

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

kvadrat
хотя припоминается какой-то проект, где вроде питон компилировался в js на клиенте прям, или что-то вроде этого. название не помню
мне кажеться все это фигня.
На хабре недавно закидали даже coffescript, а про остльной сурогат я молчу

Офлайн

#2 Окт. 3, 2013 09:12:52

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

4kpt
PyQt платный :)

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



Офлайн

#3 Окт. 3, 2013 09:45:10

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

cutwater
У PyQt двойное лицензирование, под GPL и коммерческая лицензия.
такая как и в Qt.

Это если я хочу сделать платную программу с Qt надо платить за Qt и PyQt или просто за
Qt если использовать PySide.
Верно ?

Офлайн

#4 Окт. 3, 2013 11:02:28

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Простой интерфейс для питона. Ищу

http://ru.wikipedia.org/wiki/Qt

Начиная с версии 4.5 Qt распространяется по 3 лицензиям (независимо от лицензии, исходный код Qt один и тот же):
Qt Commercial — для разработки ПО с собственнической лицензией, допускающая модификацию самой Qt без раскрытия изменений;
GNU GPL — для разработки ПО с открытыми исходниками, распространяемыми на условиях GNU GPL;
GNU LGPL — для разработки ПО с собственнической лицензией, но без внесения изменений в Qt.



Офлайн

#5 Окт. 3, 2013 11:33:41

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

ZZZ
Спасибо. Более полного ответа и ожидать было трудно.
Единственный вопрос. Что значит “без внесения изменений в Qt.”?



Отредактировано 4kpt (Окт. 3, 2013 11:34:38)

Офлайн

#6 Окт. 3, 2013 14:59:04

Gennady
Зарегистрирован: 2013-09-19
Сообщения: 27
Репутация: +  1  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

4kpt, ничего подобного. Хотя по мелочи проблемы бывают, но можно ли на PySide списывать? Вот, например:

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

Будут сложности с разворачиванием ветвей, видимо, нужно перегружать обработчик мыши. Проблема? С одной стороны. С другой — такую фичу и с такой простотой использования где еще увидишь?

Офлайн

#7 Окт. 3, 2013 16:21:59

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

Да пользуйтесь, я не против :)
Что значит: нужно всего лишь перезагрузить обработчик мыши?
Костыльное программирование в GUI не для меня :)



Отредактировано 4kpt (Окт. 3, 2013 16:24:52)

Офлайн

#8 Окт. 3, 2013 17:01:38

Gennady
Зарегистрирован: 2013-09-19
Сообщения: 27
Репутация: +  1  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

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

Офлайн

#9 Окт. 4, 2013 10:29:47

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Простой интерфейс для питона. Ищу

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

P.S. Хоть плюсик бы кто-нить поставил?.. :-P



Офлайн

#10 Окт. 4, 2013 10:43:05

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Простой интерфейс для питона. Ищу

Если QT - это “просто” (по сравнению с другими вариантами ) то мне даже и сказать нечего



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

  • Начало
  • » GUI
  • » Простой интерфейс для питона. Ищу[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version