Найти - Пользователи
Полная версия: PyQt4: настольная игрушка (попробуйте скрипт)
Начало » GUI » PyQt4: настольная игрушка (попробуйте скрипт)
1 2 3 4 5
igor.kaist
Что то я запутался :)
Как не находит картинки? выведи в дебаг путь к картинке, передаваемый функции, из заодно выведи os.getcwd()
The gray Cardinal
Картинка:
C:/Job/Current/Scripts/Milfoil/dist/pics/packs/Standard/064.gif
Прямой вызов os.getcwd():
C:\Job\Current\Scripts\Milfoil\dist
Получено так:
QtGui.QMessageBox.information(self, '', picPath, QtGui.QMessageBox.Ok)
QtGui.QMessageBox.information(self, '', os.getcwd(), QtGui.QMessageBox.Ok)
gmorgunov
The gray Cardinal
Привет.
Посмотрел milfoil.py .

PyQt4.4.2 (Qt4.4.0) , Mandriva2007:
=============================
Выдает:
Traceback (most recent call last):
File "./milfoil.py", line 708, in mousePressEvent
mime.setImageData(QtCore.QVariant(self.pixmap())) # запоминаем рисунок
TypeError: argument 1 of QVariant() has an invalid type
Если закоментровать эту строку, то все нормально, все работает.

PyQt4.3.2 (Qt4.3.2), SUSE10.3:
==========================
Все работает( drag_and_drop тоже ) при закоментированной 708 строке и
#####################################################
#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)
#####################################################
Правда здесь, при закрытии окна вылетает сегфолт :/
А так все нормально, играть можно. :)
The gray Cardinal
gmorgunov
Ага, спасибо.

Вопрос с путями при компиляции в exe актуален.
The gray Cardinal
Сейчас попробовал собрать другим способом, “python setup.py build”, файл setup.py:
from cx_Freeze import setup, Executable

setup(name = "milfoil",
version = "0.2",
description = "milfoil patience",
executables = [Executable("milfoil.py")],
options = {'build_exe' : {
'includes' : ['sip', 'encodings.cp1251'],
'excludes' : ['_ssl', 'pyreadline', 'difflib', 'doctest', 'optparse', 'pickle', 'calendar'],
'base' : 'Win32GUI',
}}
)
Та же проблема. Строка скрипта 369 не создаёт QtGui.QPixmap.
При этом абсолютно нормальный путь:
QtGui.QMessageBox.information(self, '', picPath, QtGui.QMessageBox.Ok)
И абсолютно чёткое True:
QtGui.QMessageBox.information(self, '', unicode(QtGui.QPixmap(picPath).isNull()), QtGui.QMessageBox.Ok)
И абсолютно чёткое True:
QtGui.QMessageBox.information(self, '', unicode(os.path.exists(picPath)), QtGui.QMessageBox.Ok)
Т.е. файл есть, мы его видим, но QtGui.QPixmap делать отказываемся.
akadan47
Нашел как это лечить (наверное, многим кто наступил на эти грабли пригодится):
в папку с бинарником (после компиляции) положить папку “imageformats” с DLL'ями (C:\Python26\Lib\site-packages\PyQt4\plugins\imageformats).
После этого Pixmap начинает создаваться
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