Die Interaktion mit MatplotlibWidget erstellt mit dem Qt-Designer von python-code
Stehe ich vor einem problem, die Interaktion mit dem MatplotlibWidget, dass ich die Herstellerin über Qt-Designer. Ich bin nicht in der Lage zu ändern, die für Achsenbeschriftungen, Maßstab, Titel bieten oder sonst was. Mache ich etwas falsch?
Dies ist ein Beispiel UI-code generiert, mit dem Qt Designer:
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.mplwidget = MatplotlibWidget(self.centralwidget)
self.mplwidget.setGeometry(QtCore.QRect(70, 50, 400, 300))
self.mplwidget.setObjectName("mplwidget")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
from matplotlibwidget import MatplotlibWidget
class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None, f=QtCore.Qt.WindowFlags()):
QtGui.QMainWindow.__init__(self, parent, f)
self.setupUi(self)
Dies ist die python-code, den ich schrieb, um die Interaktion mit den UI-python-Code:
from PyQt4 import QtGui, QtCore
from TestUI2 import MainWindow
class Window(MainWindow):
def __init__(self):
MainWindow.__init__(self)
x=[0,10,100]
y=[3,4,5]
self.mplwidget.axes.set_xscale('log') # Nothing Happens
self.mplwidget.axes.set_title('GRAPH') # Nothing Happens
self.mplwidget.axes.plot(x,y)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
InformationsquelleAutor Raj Vora | 2013-08-13
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Definieren Sie Ihre eigene Klasse für MatplotlibWidget erste (in deinem script, nicht den UI-code) und dann instantialize es im Fenster() definintion. Zu tun, dass Sie auch importieren müssen FigureCanvas von _qt4agg matplotlib backend-Modul und Abbildung Klasse:
Dann in der Matplotlib Klassendefinition erstellen Sie Instanzen der Abbildung Nebenhandlungen und Abbildung Leinwand,, die dann verwendet werden können, um die Interaktion mit Ihrer Zeichnung aus dem Hauptfenster.
Also mit deinem code würde dies wie folgt Aussehen:
Und der Ui-Skript:
Und dann, wenn Sie interagieren wollen mit der mpl Grundstück, zum Beispiel zu ändern, einen Titel, den Sie tun es in dem Fenster der Klasse, die sagen:
Hoffe, das hilft.
InformationsquelleAutor phil_thy
Müssen Sie nur fügen Sie die Zeile:
in:
Gibt es keine Notwendigkeit, manuell zu definieren Sie die Klasse, können Sie einfach die
MatplotlibWidget
Sie erstellt mit dem Qt-Designer.InformationsquelleAutor Elad Joseph
Basierend auf embert Antwort, in Bezug auf den code in der ursprünglichen Frage, der folgende Code ist getestet und funktioniert:
Entweder
Oder
InformationsquelleAutor noname
Rufen Sie
self.mplwidget.axes.plot(x,y)
nach legen Sie die Eigenschaften.Daher ändern
zu
oder legen Sie die Eigenschaften nach dem Aufruf
plot
InformationsquelleAutor embert