У меня есть модуль Python с двумя классами, MainWindow (который наследуется от QMainWindow) и MyView (который наследуется от QGraphicsView). В MainWindow у меня есть MyView, который должен установить некоторые переменные в классе MainWindow. Итак, я решил, что просто поставлю ссылку на мой объект MainWindow в глобальную переменную и позволю MyView обращаться к ней так. Вот код:Класс Python глобальный не установлен
class MyView(QtGui.QGraphicsView):
def __init__(self, parent = None):
super(MyView, self).__init__(parent)
def mousePressEvent(self, event):
super(MyView, self).mousePressEvent(event)
print "Mouse Pointer is currently hovering at: ", event.pos()
global myapp
print "myapp value is: ", myapp
myapp = None
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = MainWindow()
print "myapp assigned, value is: ", myapp
myapp.show()
sys.exit(app.exec_())
После нажатия на MyView вывод программы заключается в следующем:
$ ./main.py
Gtk-Message: Failed to load module "canberra-gtk-module"
myapp assigned, value is: <__main__.MainWindow object at 0x7fc29e1ed640>
Mouse Pointer is currently hovering at: PyQt4.QtCore.QPoint(172, 132)
myapp value is: None
Почему это? Я не устанавливаю «myapp» в другое значение, в опубликованном коде все это происходит.
у вас есть '' parent' в MyView' для доступа 'MainWindow' – furas
Пример код очень вводит в заблуждение, так как он не выводит указанный результат. Я бы предположил, что настоящая причина, по которой ваш код не работает, заключается в том, что вы пытаетесь импортировать из основного сценария. – ekhumoro