Python 使用Gtk应用程序中的matplotlib.pyplot
我在Python2.7上实现了一个非常简单的Gtk应用程序,它所做的只是打开一个主窗口。我想做的是打开另一个窗口,在用户输入后使用pyplot绘制一些数据。现在为了使事情更简单,我只是忽略处理用户输入,我只是尝试从主应用程序窗口的init函数中绘制一些东西 不幸的是,这并不像预期的那样有效。主应用程序窗口按预期打开,但plt.plot()命令中的窗口似乎完全死机。没有打印任何内容,我甚至无法关闭窗口,除非我先关闭主应用程序窗口 任何帮助都将不胜感激 下面是我试图运行的代码示例Python 使用Gtk应用程序中的matplotlib.pyplot,python,matplotlib,gtk,Python,Matplotlib,Gtk,我在Python2.7上实现了一个非常简单的Gtk应用程序,它所做的只是打开一个主窗口。我想做的是打开另一个窗口,在用户输入后使用pyplot绘制一些数据。现在为了使事情更简单,我只是忽略处理用户输入,我只是尝试从主应用程序窗口的init函数中绘制一些东西 不幸的是,这并不像预期的那样有效。主应用程序窗口按预期打开,但plt.plot()命令中的窗口似乎完全死机。没有打印任何内容,我甚至无法关闭窗口,除非我先关闭主应用程序窗口 任何帮助都将不胜感激 下面是我试图运行的代码示例 from gi.r
from gi.repository import Gtk
import matplotlib.pyplot as plt
class MyGraphApp():
def __init__(self):
self.geometry = (500, 500)
self.main_win = self.create_window_layout() # main window
self.fig = plt.figure()
plt.plot([0,10], [10, 10])
def destroy(self, widget, data=None):
Gtk.main_quit()
def main(self):
Gtk.main()
def create_window_layout(self):
win = Gtk.Window(Gtk.WindowType.TOPLEVEL)
self.main_vbox = Gtk.VBox(False, 1)
self.main_vbox.set_border_width(1)
win.add(self.main_vbox)
self.main_vbox.show()
self.headerbar = Gtk.HeaderBar(title="Main Window")
self.headerbar.props.show_close_button = True
win.set_titlebar(self.headerbar)
win.set_default_size(self.geometry[0], self.geometry[1])
win.set_position(Gtk.WindowPosition.CENTER)
win.connect("delete_event", self.destroy)
win.show_all()
return win
myGraphApp = MyGraphApp()
myGraphApp.main()
你好你试了什么?你找到导致挂断的代码了吗?并不是事情“挂断”。发生的情况是,包含图形的窗口没有响应任何用户界面:所有按钮都没有响应,您无法关闭窗口,甚至无法看到绘图本身。您可以注释掉代码中的所有行,然后让它运行,并在以后的每次尝试中重新添加一行代码。因此,您可以了解是某一行代码导致了问题,还是整个事情都搞砸了……问题不在于代码。问题是Gtk与matplotlib后端的交互。由于我对后端不太了解,我想问问社区,我无法重现你的问题。但是,在单独的线程中启动它可能会有所帮助。还值得考虑将这些小部件嵌入到您的窗口中。