2017-07-19 178 views
0

我想在兩個圖的底部添加一個按鈕,它將顯示要從文件讀入的數據。在這兩個地塊下面將是一個控制行動的按鈕。我試圖從pyqt庫中添加一個小部件,佈局,graphicsItem。 我可以輕鬆地添加標籤的佈局,但增加一個按鈕,我收到以下錯誤添加按鈕到PyQtGraph佈局

addItem(self, QGraphicsLayoutItem, int, int, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment()): argument 1 has unexpected type 'QPushButton' 

的代碼進行測試時:

import pyqtgraph as pg 

win = pg.GraphicsWindow() 

win.setWindowTitle('Test App') 
label = pg.LabelItem(justify='right') 
win.addItem(label) 

button = QtGui.QPushButton() 

p1 = win.addPlot(row=0, col=0) 
p2 = win.addPlot(row=1, col=0) 
p3 = win.addLayout(row=2, col=0) 
p3.addItem(button,row=1,col=1) 

回答

1

addItem的pyqtgraph文檔指出它補充說:「一個圖形項目到視圖框。「

事情是,QtPushButton不是一個圖形項目,它是一個小部件。因此,錯誤:addItem期待一個QGraphicsLayoutItem(或東西,繼承類),以及你傳遞一個QWidget

要添加小組件到GraphicsWindow,你可以用QGraphicsProxyWidget

proxy = QtGui.QGraphicsProxyWidget() 
button = QtGui.QPushButton('button') 
proxy.setWidget(button) 

p3 = win.addLayout(row=2, col=0) 
p3.addItem(proxy,row=1,col=1) 

把它包但取決於你需要做什麼,你可能想要實現一個PyQt GUI,GraphicsWindow是這個GUI的一個元素。這個問題可以幫助你:How to update a realtime plot and use buttons to interact in pyqtgraph?

相關問題