首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PyQt对话框中的matplotlib十字光标不显示

PyQt对话框中的matplotlib十字光标不显示
EN

Stack Overflow用户
提问于 2016-04-01 15:45:40
回答 2查看 1.5K关注 0票数 1

我希望在matplotlib窗口中的光标处有一个十字准线。这在matplotlib gallery中给出的示例中得到了解决。但不幸的是,如果我在Qt对话框窗口(QDialog)中有matplotlib小部件,它就不能工作。

这是我的示例代码,我想在其中实例化matplotlib.widgets.Cursor对象,但没有显示任何内容。

代码语言:javascript
复制
import sys
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
from matplotlib.widgets import Cursor

class Window(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.figure = plt.figure(facecolor='white')
        self.canvas = FigureCanvas(self.figure)
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.canvas)
        self.setLayout(layout)

        ''' plot some random stuff '''
        ax = self.figure.add_subplot(111)
        self.ax = ax
        ax.plot([1,2])

        # Set cursor        
        Cursor(self.ax, useblit=False, color='red', linewidth=1)
        self.canvas.draw()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    main = Window()
    main.show()
    sys.exit(app.exec_())

有人能帮帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-26 14:30:00

我已经修改了你的代码如下,它在我的电脑上工作。希望能有所帮助。

代码语言:javascript
复制
import sys
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
from matplotlib.widgets import Cursor

class Window(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)
        self.figure = plt.figure(facecolor='white')
        self.canvas = FigureCanvas(self.figure)
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.canvas)
        self.setLayout(layout)

        ''' plot some random stuff '''
        ax = self.figure.add_subplot(111)
        self.ax = ax
        ax.plot([1,2])
        # Set cursor        
        cursor = Cursor(self.ax, useblit=False, color='red', linewidth=1)

        ############## The added part: #############
        def onclick(event):
            cursor.onmove(event)
        self.canvas.mpl_connect('button_press_event', onclick)
        ############################################
        self.canvas.draw()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    main = Window()
    main.show()
    sys.exit(app.exec_())
票数 3
EN

Stack Overflow用户

发布于 2018-07-30 02:50:19

(1):Cursor(self.ax, useblit=False, color='red', linewidth=1)中的原始代码没有像文档中指出的那样保留对游标的引用。

(2)中的代码有赋值,但不是赋值给类引用,而是赋值给局部变量:

cursor = Cursor(self.ax, useblit=False, color='red', linewidth=1)

(2)中的代码可以处理指定的添加内容,但光标移动缓慢。

解决方案是(1)中的代码,但修改如下:

self.cursor = Cursor(self.ax, useblit=False, color='red', linewidth=1)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36350771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档