2016-09-23 77 views
0

我看到我不是the only one在pyqtgraph中有一個背景顏色問題 - 我正在編寫一個QGIS軟件插件,它帶有一個帶有圖形的附加對話框。我試圖設置背景顏色,並且只在使用QGIS Plugin Reloader插件重新加載插件之後才加載(這個插件是爲開發插件的人制作的,所以在代碼發生任何更改後,刷新並加載一個新插件到QGIS中,它不被普通用戶使用)。pyqtgraph - 僅在重新加載後才加載背景顏色

我的下面這段代碼:

import pyqtgraph 

... 

def prepareGraph(self): # loads on button click 

    self.graphTitle = 'Graph one' 

    # prepare data - simplified, but data display correctly 
    self.y = something 
    self.x = something_else 

    self.buildGraph() 


def buildGraph(self): 
    """ Add data to the graph """ 
    pyqtgraph.setConfigOption('background', (230,230,230)) 
    pyqtgraph.setConfigOption('foreground', (100,100,100)) 
    dataColor = (102,178,255) 
    dataBorderColor = (180,220,255) 
    barGraph = self.graph.graphicsView 
    barGraph.clear() 
    barGraph.addItem(pyqtgraph.BarGraphItem(x=range(len(self.x)), height=self.y, width=0.5, brush=dataColor, pen=dataBorderColor)) 
    barGraph.addItem(pyqtgraph.GridItem()) 
    barGraph.getAxis('bottom').setTicks([self.x]) 
    barGraph.setTitle(title=self.graphTitle) 

    self.showGraph() 


def showGraph(self): 
    self.graph.show() 

有趣的是,沒有任何問題,(即使前景色!)所有buildGraph()負荷的零件只有背景顏色不會。

這是一個已知的錯誤還是設置前景色和背景色有區別?鏈接的問題並沒有幫助我解決這個問題。

pyqtgraph==0.9.10 PyQt4==4.11.4 Python 2.7.3

回答

0

pyqtgraph documentation說,大約setConfigOption設置,即:

注意,這必須在創建任何部件

在我的代碼之前設置我有

def buildGraph(self): 

    pyqtgraph.setConfigOption('background', (230,230,230)) 
    pyqtgraph.setConfigOption('foreground', (100,100,100)) 

    barGraph = self.graph.graphicsView 

這就是我認爲的「之前」的地方,但它是創建一個對象,而不是小部件。一個人應該在課內寫setConfigOption,即負責存儲pyqtgraph對象。在我的情況下,它是一個單獨的文件創建一個單獨的對話框內__init__功能:

從PyQt4的進口QtGui,QtCore 從plugin4_plot_widget進口Ui_Dialog 從plugin4_dialog進口plugin4Dialog 進口pyqtgraph

class Graph(QtGui.QDialog, Ui_Dialog): 
    def __init__(self): 
     super(Graph, self).__init__() 
     pyqtgraph.setConfigOption('background', (230,230,230)) 
     pyqtgraph.setConfigOption('foreground', (100,100,100))   

    self.setupUi(self) 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    main = Graph() 
    main.show() 
    sys.exit(app.exec_())