2016-10-12 10 views
0

私は特定のボタンをクリックするとグラフのデータを私に与えるはずのプログラムを書いています。 これは私の今のところまでのプログラムですが、最後の4つのボタンを接続する必要がありますが、最初のボタンは機能しますが、もう1つの問題があります:「One Plot "しかし、私は"最初のボタン "をアクティブにして以来、チャートは、問題のタイトルのためにもう表示されません。これはスクリプトです:pythonのchangefig()は2つの引数(1つが指定されています)を受け取ります

class Main(QMainWindow, Ui_MainWindow): 
def __init__(self, parent=None): 
    super(Main, self).__init__(parent) 
    self.setupUi(self) 
    self.fig_dict = {} 

    self.mplfigs.itemClicked.connect(self.changefig) 


    self.button1.setText("First Point") 
    self.button1.clicked.connect(self.onClickButton1) 

    self.dialogbutton1 = PopUp(self) 

    fig = Figure() 
    self.addmpl(fig) 
@QtCore.pyqtSlot() 
def changefig(self, item): 
    text = item.text() 
    self.rmmpl() 
    self.addmpl(self.fig_dict[str(text)]) 

def addfig(self, name, fig): 
    self.fig_dict[name] = fig 
    self.mplfigs.addItem(name) 

def addmpl(self, fig): 
    self.canvas = FigureCanvas(fig) 
    self.mplvl.addWidget(self.canvas) 
    self.canvas.draw() 

    self.toolbar = NavigationToolbar(self.canvas, 
      self.mplwindow, coordinates=True) 
    self.mplvl.addWidget(self.toolbar) 

def onClickButton1(self): 
    """ When button 1 is clicked I do the following """ 
    print "does nothing now." 

    self.dialogbutton1.exec_() 

def rmmpl(self,): 
    self.mplvl.removeWidget(self.canvas) 
    self.canvas.close() 
    self.mplvl.removeWidget(self.toolbar) 
    self.toolbar.close() 

クラスのポップアップ(QtGui.QDialog): DEF のinit(自己、親=なし): スーパー(ポップアップ、自己)。 のinit(親)

self.buttonBox = QtGui.QDialogButtonBox(self) 
    self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 
    self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) 

    self.textBrowser = QtGui.QTextBrowser(self) 
    self.textBrowser.append("x - Coordinate = 0                   y - Coordinate = 0.031451") 

    self.verticalLayout = QtGui.QVBoxLayout(self) 
    self.verticalLayout.addWidget(self.textBrowser) 
    self.verticalLayout.addWidget(self.buttonBox) 

場合 == 'メイン':class MainでNP

fig1 = Figure() 
ax1f1 = fig1.add_subplot(111) 
ax1f1.plot(np.random.rand(5)) 


app = QtGui.QApplication(sys.argv) 
main = Main() 
main.addfig('One plot', fig1) 

print main.fig_dict 
main.show() 
sys.exit(app.exec_()) 

答えて

0

として 輸入SYS PyQt4インポートQtGui 輸入numpyのから 、あなたがいますchangefigを呼び出すと、self.mplfigs.itemClicked.connect(self.changefig)となります。

しかし、関数定義changefigdef changefig(self, item):であり、2つの引数-selfitemが必要です。

changefig-self.mplfigs.itemClicked.connect(self.changefig)を呼び出したときには、自分だけが渡されます。しかし、アイテムは渡されません。

だから、そのエラーが発生しています。

それはself.mplfigs.itemClicked.connect(self.changefig(item))

+0

する必要がありますが、私はそれを実行したときに、今そこに書かれている:今 –

+0

わかりましたが、私はそれを実行したときにそこに書かれている: ファイル「C:\ Users \ユーザーhanlab \デスクトップ\クエンティン\プロットMIT (item.) self.mplfigs.itemClicked.connect(self.changefig(item)) NameError:グローバル名 'item'が定義されていません –

+0

私は誤って上のコメントを入力しました。私は誤ってenterを押しました –

関連する問題