Ошибка QGraphicsView - Попытка показать JPG с Python

1

Я использую Python 3.2 с Eric5 и QTDesigner, чтобы попытаться отобразить jpg в сцене QGraphicsView. Следующий код дает мне Файл не может быть открыт. Причина: [Errno 22] Недопустимый аргумент: " ошибки на первом проходе, а затем заканчивается Отлаженная программа подняла исключение, необработанное AttributeError Объект 'MyForm' не имеет атрибута 'QGraphicsView' Файл:, Line: 17

Указанный файл screentest.ui - это просто поле объекта QGraphicsView в форме.

Любые предложения приветствуются.

 #UIGraphicTest.py

import sys
# from PyQt4 import QtCore
from PyQt4 import QtGui
from screentest import Ui_MainWindow

class MyForm(QtGui.QMainWindow):
  def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.ui = Ui_MainWindow()
    self.ui.setupUi(self)

if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  myapp = MyForm()
  grview = myapp.QGraphicsView()
  scene = myapp.QGraphicsScene()
  scene.addPixmap(QtGui.QPixmap('att-logo.jpg'))
  grview.setScene(scene)

  myapp.show()
  sys.exit(app.exec_())
  • 0
    Можете ли вы опубликовать сгенерированный файл .py GUI? Вы должны были дать QGraphicsView имя.
Теги:
qgraphicsview
qt-designer

1 ответ

0

Похоже, мне нужно было переместить мою сцену в класс, а затем ссылаться на имя объекта QGraphicsView. Я также добавил ctypes для использования в Windows. Здесь рабочий код:

#UIGraphicTest.py

import sys,  ctypes
#from PyQt4 import QtCore
from PyQt4 import QtGui
from screentest import Ui_MainWindow

class MyForm(QtGui.QMainWindow):
  def __init__(self):
    QtGui.QWidget.__init__(self)
    self.ui = Ui_MainWindow()
    self.ui.setupUi(self)
    #Prevent grouping with python in Windows
    myappid = 'UIGraphicTest'
    ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
    # Create a Scene
    self.scene = QtGui.QGraphicsScene()
    self.scene.addPixmap(QtGui.QPixmap('logo.jpg')) 
    self.ui.graphicsView.setScene(self.scene)

if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  myform = MyForm()
  myform.show()

  sys.exit(app.exec_())

Ещё вопросы

Сообщество Overcoder
Наверх
Меню