Я использую wxpython в целом с backplan matplotlib на машине ubuntu. Я хотел бы связать свою полосу matplotlib с кнопкой button_press_event, которая выведет модальный диалог wxpython. Когда модальное диалоговое окно всплывает, все приложение замораживается. Эта проблема не возникает на машине 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 проблема также появляется, я делаю вывод, так что эта проблемой является ошибкой на Linux (здесь Ubuntu 12.04) для следующей версии libs: wx. версия: '2.8.12.1' matplotlib. версия: '1.1.1rc'
не то, что точка модальных диалогов (чтобы заблокировать остальную часть программы)? – tacaswell
Проблема в том, что диалоговое окно также заморожено, как и все приложения на рабочем столе, которые больше не реагируют. единственный способ избежать - переключиться на другой рабочий стол с помощью клавиатуры ... –