2014-12-19 2 views
0

Я нашел это Google groups discussion о том, как отобразить текст в pyqtgraph's GLViewWidget. Я хочу, чтобы иметь возможность изменить отображаемый текст, поэтому я изменил код так:Как избежать использования глобальной переменной для установки текста в GLViewWidget?

import pyqtgraph.opengl as gl 
from PyQt4.Qt import QApplication 
class MyGLView(gl.GLViewWidget): 
     def paintGL(self, *args, **kwds): 
       global text 
       gl.GLViewWidget.paintGL(self, *args, **kwds) 
       self.renderText(0, 0, 0, text) 
app = QApplication([]) 
w = MyGLView() 
w.show() 
text = "123" 
w.renderText(0, 0, 0, text) 

Это, вероятно, не самый лучший способ сделать это. Можно ли переписать этот код, чтобы избежать использования глобальной переменной text?

+1

Почему бы просто не сделать 'text' свойство' MyGLView'? – Luke

+0

@ Luke Я начинающий питон, вы можете показать пример? – shrx

ответ

2

Если вы хотите получить text из глобального пространства имен, сделайте его атрибутом класса MyGLView. Пример:

import pyqtgraph.opengl as gl 
from PyQt4.Qt import QApplication 

class MyGLView(gl.GLViewWidget): 
    def __init__(self, text): 
     super(MyGLView, self).__init__() 
     self.text = text 

    def setText(self, text): 
     self.text = text 
     self.update() 

    def paintGL(self, *args, **kwds): 
     gl.GLViewWidget.paintGL(self, *args, **kwds) 
     self.renderText(0, 0, 0, self.text) 


app = QApplication([]) 
w = MyGLView(text="O HAI World") 
w.show() 
+0

Спасибо. Вероятно, вы забыли удалить строку 'global text' в определении' paintGL'. – shrx

+0

Да, спасибо .___ – Luke

+0

К сожалению, я получаю сообщение об ошибке: 'Файл '/Users/sharix/PycharmProjects/simple/test.py", строка 19, в w.show() '' RuntimeError: super-class __init __ () типа MyGLView никогда не назывался'. – shrx

Смежные вопросы