우분투 컴퓨터에서 matplotlib 백엔드와 함께 wxpython을 사용합니다. matplotlib 캔버스를 wxpython 모달 대화 상자를 팝업하는 button_press_event에 연결하고 싶습니다. 모달 대화 상자가 나타나면 전체 응용 프로그램이 정지됩니다. 이 문제는 Windows 시스템에서는 발생하지 않습니다. 다음은 일반적으로 문제를 재현하는 스 니펫입니다.모달 대화 상자가 전체 응용 프로그램을 고정시킵니다.
import wx
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
from matplotlib.figure import Figure
class SettingDialog(wx.Dialog):
def __init__(self, parent=None):
wx.Dialog.__init__(self, parent, wx.ID_ANY, title="Modal dialog")
class PlotterFrame(wx.Frame):
def __init__(self, parent, title="Frame with matplotlib canvas"):
wx.Frame.__init__(self, parent, wx.ID_ANY, title)
self.figure = Figure(figsize=(5,4), dpi=None)
self.canvas = FigureCanvasWxAgg(self, -1, self.figure)
self.canvas.mpl_connect("button_press_event", self.on_click)
def on_click(self, event=None):
d = SettingDialog(self)
d.ShowModal()
d.Destroy()
if __name__ == "__main__":
app = wx.App(False)
f = PlotterFrame(None)
f.Show()
app.MainLoop()
당신은 내 코드에 어떤 문제가 있는지 어떤 생각을 가지고시겠습니까?
PS0 : 문제는 데스크탑의 모든 응용 프로그램이 더 이상 반응하지 않는 것처럼 대화 상자 창이 고정되어 있다는 점입니다. 탈출 할 수있는 유일한 방법은 키보드를
PS1을 사용하여 다른 바탕 화면으로 전환하는 것입니다 : 나는 그래서 결론은 매우 일반적인 예와 http://eli.thegreenplace.net/files/prog_code/wx_mpl_bars.py.txt 같은 문제가 나타날이 문제는 리눅스에서 버그입니다 (여기 우분투 12.04를) 다음 libs 버전 : wx. 버전 : '2.8.12.1' matplotlib. 버전 '1.1.1rc은'
은 모달 대화 상자의 요점이 아닙니다 (프로그램의 나머지 부분을 차단하기 위해)? – tacaswell
문제는 더 이상 반응하지 않는 데스크톱의 모든 응용 프로그램처럼 대화 상자 창이 고정되어 있다는 것입니다. 탈출하는 유일한 방법은 키보드를 사용하여 다른 바탕 화면으로 전환하는 것입니다. –