2015-07-10 59 views
0

我是Python新手,我試圖用PyQt4創建我的第一個程序。我的問題基本如下:我有兩個複選框(Plot1和Plot2)和一個「End」按鈕,在我的課堂內。當我按下End時,我想只看到用戶使用matplotlib檢查的情節。我無法做到這一點。我的第一個想法是:如果複選框被選中,在python上顯示圖(使用PyQt4)

 self.endButton.clicked.connect(self.PlotandEnd) 
     self.plot1Checkbox.clicked.connect(self.Plot1) 
     self.plot2Checkbox.clicked.conncet(self.Plot2) 

    def PlotandEnd(self) 
     plot1=self.Plot1() 
     pyplot.show(plot1) 
     plot2=self.Plot2() 
     pyplot.show(plot2) 

    def Plot1(self) 
     plot1=pyplot.pie([1,2,5,3,2]) 
     return plot1 

    def Plot2(self) 
     plot2=pyplot.plot([5,3,5,8,2]) 
     return plot2 

這是不行的,當然,因爲「PlotandEnd」將繪製兩個圖中,無論相應的複選框的。我該怎麼做我想要做的?

回答

2

將繪圖創建包裝在if語句中,該語句會查看複選框的狀態。例如:

def PlotandEnd(self) 
    if self.plot1Checkbox.isChecked(): 
     plot1=self.Plot1() 
     pyplot.show(plot1) 

    if self.plot2Checkbox.isChecked(): 
     plot2=self.Plot2() 
     pyplot.show(plot2) 

需要下面幾行:

self.plot1Checkbox.clicked.connect(self.Plot1) 
    self.plot2Checkbox.clicked.conncet(self.Plot2) 

這無助的時刻有用! Qt永遠不會使用您的方法的返回值,並且您只希望在單擊「結束」按鈕時發生事情,而不是單擊複選框時發生。 PlotX()方法目前僅適用於您的PlotandEnd()方法。

+0

太好了。謝謝。 – Thiagogpsm

+0

@ Thiagogps93如果此答案解決了您的問題,請考慮將其標記爲「接受的答案」,方法是單擊左側的勾號和/或提出答案。 –

+0

我在接受的答案中提出。儘管如此,我還沒有足夠的聲望來升級。 – Thiagogpsm

相關問題