2014-12-19 33 views
0

我發現這個Google groups discussion關於如何顯示pyqtgraph的文本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我是一個Python初學者,你能舉個例子嗎? – 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

謝謝。你可能忘了在'paintGL'定義中刪除'global text'行。 – shrx

+0

是的,謝謝.___ – Luke

+0

不幸的是,我得到一個錯誤:'File「/Users/sharix/PycharmProjects/simple/test.py」,第19行,在 w.show()''RuntimeError:super-class __init __( )MyGLView類型從未被調用過。 – shrx