2015-11-08 48 views
2

當我把plt.show()在不同的方法,這是不可能的點擊按鈕:matplotlib,plt.show()在不同的方法=無on_clicked

import matplotlib.pyplot as plt 
from matplotlib.widgets import Button 

class ButtonTest: 
    def __init__(self): 
     ax = plt.axes([0.81, 0.05, 0.1, 0.075]) 
     bnext = Button(ax, 'Next') 
     bnext.on_clicked(self._next) 
#   plt.show() 

    def show(self): 
     print("when i put plt.show() in a different method, it's impossible to click the button") 
     plt.show() 

    def _next(self, event): 
     print("next !") 

b = ButtonTest() 
b.show() 

按鈕未甚至在鼠標移過它時突出顯示。有人會知道爲什麼以及如何解決這個問題?

回答

1

發生什麼事情是按鈕對象被垃圾收集之前,情節顯示。你需要保持一個參考。

例如,如果你改變

bnext = Button(...) 

self.bnext = Button(...) 

一切都應該工作。

作爲一個完整的例子:

import matplotlib.pyplot as plt 
from matplotlib.widgets import Button 

class ButtonTest: 
    def __init__(self): 
     ax = plt.axes([0.81, 0.05, 0.1, 0.075]) 
     self.bnext = Button(ax, 'Next') 
     self.bnext.on_clicked(self._next) 

    def show(self): 
     plt.show() 

    def _next(self, event): 
     print("next !") 

ButtonTest().show()