Найти - Пользователи
Полная версия: PyQt4: настольная игрушка (попробуйте скрипт)
Начало » GUI » PyQt4: настольная игрушка (попробуйте скрипт)
1 2 3 4 5
The gray Cardinal
Исправил пока ша-банг, переводы строк и ошибку, которую нашёл по посту #9. В первом посте темы ссылка поправлена, в посте #4 текст поправлен тоже.
Shecspi
Можешь попробовать ещё разок. Всё перезакачивать не обязательно, можешь взять только код из поста #4.
Shecspi
Вот теперь работает.
The gray Cardinal
Shecspi
Вот теперь работает.
Двойной щелчок работает?
Shecspi
The gray Cardinal
Двойной щелчок работает?
Нет
The gray Cardinal
Shecspi
Нет
Блин :). Ну, в общем, мои вопросы в самом первом посте в силе, для знатоков PyQt4.
gmorgunov
The gray Cardinal]
Попробовал следующее:
#self.scene.clear() # очистка сцены
######################################################
self.scene = Scene()
self.view = QtGui.QGraphicsView(self.scene, self)
self.view.setBackgroundBrush(QtGui.QColor(0, 128, 64))
self.setCentralWidget(self.view)
######################################################
Стало лучше. При переходе к новой игре 36 —> 48, посадочные места очищаются, drag_and_drop работает, но по непонятному закону. :/ Окно моргает правда, но это мелочи.
Вопросы:
1) Нет ли ошибки в логике? При double click все работает правильно.
2) Как быть со старой сценой? Методов destroy() / remove() / delete() у сцены я не нашел.

P.S. Пробовал менять методы mouseDoubleClickEvent <—> mousePressEvent - не помогает. :/
The gray Cardinal
Мы так будем тыщу лет выяснять, т.к. у меня нет Qt 4.3, а у тебя нет 4.4… Ошибки в логике думаю нет, т.к. те, кому удалось сыграть, не жаловались, вроде (да и у меня всё нормально). В общем, думаю, выход один — standalone executable. Откатываться на старую версию Qt в данном случае — плохая идея, имхо (ведь 4.4 — не бета и есть в репозитариях). Однако неприятно, если двойной щелчок — это глюк Qt 4.4 под Linux…
The gray Cardinal
The gray Cardinal
2) Как быть со старой сценой? Методов destroy() / remove() / delete() у сцены я не нашел.
Видимо, что-то вроде:
for card in self.scene().items():
self.scene.removeItem(card)
The gray Cardinal
Немного исправил игрушку, скачать последнюю версию можно здесь (635 766 байт).

Со standalone executable есть проблема.
Компилирую так (setup.py):
from distutils.core import setup
import py2exe
setup(windows=[{"script":"milfoil.py"}], options={"py2exe":{"includes":["sip"]}})
Затем команда:
python setup.py py2exe
Программа собирается, но имеет размер ~25 Мб. Есть способы уменьшить?

И ещё. В скомпилированной версии кое-что не работает. Конкретно — строка скрипта 369 (последняя версия):
card = Element(QtGui.QPixmap(picPath), None)
QtGui.QPixmap не создаётся, видимо из-за того, что программа не может найти путь (picPath). Как следствие — через две строки далее получается деление на ноль, т.к. у несуществующего рисунка нет высоты и ширины, а я на них делю. Я отлаживал, получая путь: если значение переменной picPath вставить, например, в адресную строку окна “Мой компьютер”, всё нормально, сразу без вопросов открывается графический файл. Т.е. путь вроде как нормальный (кстати, путь содержит только прямые слеши, для универсальности). Не могу понять, в чём проблема (нескомпилированный скрипт работает без вопросов).
igor.kaist
Насчет сборки, я писал уже :)
можно еще почитать на http://www.py2exe.org/index.cgi/OptimizingSize
Насчет путей почитать http://www.py2exe.org/index.cgi/WhereAmI

Насчет путей, лично я всегда указываю относительный путь, и хоть убей, это у меня РАБОТАЕТ, хотя многие мне говорят что не должно работать:
# Перед сборкой вставь эту строчку в начало скрипта
os.chdir('\\'.join(str(os.__file__).split('\\')[:-2]))
# Далее можно указывать относительные пути open('data/image.png') и т.п.
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