Pyqt

2013-04-24 5 views
7

में एम्बेडेड Matplotlib इंटरैक्टिव ग्राफ मैंने एक साधारण पायथन स्क्रिप्ट बनाई है कि जब रन को एक पीईक्यूटी विंडो के अंदर एक एम्बेडेड matplotlib ग्राफ प्रदर्शित करना चाहिए। मैंने ग्राफ को एम्बेड करने और चलाने के लिए this ट्यूटोरियल का उपयोग किया है। नामकरण सम्मेलनों में कुछ अंतरों के अलावा और समग्र यूआई में मेरा ग्राफ बिल्कुल ट्यूटोरियल में से एक के रूप में उत्पन्न होता है।Pyqt

मेरी समस्या यह है कि मैं इसे एक इंटरैक्टिव ग्राफ बनाना चाहता हूं जो ज़ूमिंग और ड्रैगिंग के लिए अनुमति देता है, लेकिन मैं इसे केवल माउस (क्लिक करना और खींचना, स्क्रॉल व्हील इत्यादि) के साथ करना चाहता हूं और टूलबार के बिना (क्योंकि मुझे यह बदसूरत लगता है)।

विजेट वर्ग:

class MplCanvas(FigureCanvas): 
    """ 
    Creates a canvas on which to draw our widgets 
    """ 
    def __init__(self): 
     self.fig = Figure() 
     self.ax = self.fig.add_subplot(111) 

     FigureCanvas.__init__(self, self.fig) 
     FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding) 
     FigureCanvas.updateGeometry(self) 

class marketdephWidget(QtGui.QWidget): 
    """ 
    The market deph graph 
    """ 
    def __init__(self, parent = None): 
     QtGui.QWidget.__init__(self, parent) 
     self.canvas = MplCanvas() 
     self.vbl = QtGui.QVBoxLayout() 
     self.vbl.addWidget(self.canvas) 
     self.setLayout(self.vbl) 

साजिश समारोह (बटन प्रेस पर चलने):

# initialize the mplwidgets 
def PlotFunc(self): 
    randomNumbers = random.sample(range(0, 10), 10) 
    self.ui.widget.canvas.ax.clear() 
    self.ui.widget.canvas.ax.plot(randomNumbers) 
    self.ui.widget.canvas.draw() 

उत्तर

2

यह एक समय हो गया है, लेकिन मैं एक ऐसी ही समस्या पर काम कर रहा था। मेरे पास example here है। शायद यह मदद करेगा।

प्रोग्राम PySide का उपयोग कर रहा है, हालांकि कोई समस्या नहीं होनी चाहिए।

कार्यक्रम

python pyStocker.py 

आप एक विजेट पॉपअप देखना होगा चलाने के लिए और ऊपरी बाएं में आप एक TextEdit बॉक्स देखेंगे। बस GOOG या कुछ अन्य वैध स्टॉक प्रतीक दर्ज करें और एंटर दबाएं। ग्राफ स्टॉक के डेटा के साथ पॉप्युलेट होगा। नीचे स्लाइडर बार ग्राफ़ रीयल-टाइम बदल देता है।