[英]Python - PyQt Matplotlib plot positioning
我目前正在制作一个GUI,我想要有一些滑块,一些按钮和一些图表。 我正在努力将Matplotlib图放置在所需的位置。 该图位于QVBoxLayout中,我尝试将其放入Widget中没有成功。 我希望能够选择情节的位置和大小
这是我现在所拥有的:
这就是我想要的,我可以在其中定义位置和大小,以便为其他控件留出空间:
这是基本代码:
import sys
import numpy as np
from PyQt4 import QtGui, QtCore
# import inspect
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
import matplotlib.pyplot as plt
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
#PLOTTING
self.figure = plt.figure()
self.canvas = FigureCanvas(self.figure)
self.toolbar = NavigationToolbar(self.canvas, self)
self.plot()
# set the layout
layout = QtGui.QVBoxLayout()
layout.addWidget(self.toolbar)
layout.addWidget(self.canvas)
self.setLayout(layout)
#WINDOW PROPERTIES
self.resize(800,800)
self.setWindowTitle('Waveguide Array')
self.setWindowIcon(QtGui.QIcon('flavicon.png'))
self.show()
def plot(self):
''' plot some random stuff '''
data = [np.random.random() for i in range(10)]
ax = self.figure.add_subplot(111)
ax.hold(False)
ax.plot(data, '*-')
self.canvas.draw()
# def update_plot(self):
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
谢谢您的帮助!
这是一个解决方案。 在主窗口小部件内部制作一个绘图窗口小部件,似乎可以正常工作,并且可以使用setGeometry控制位置。
self.main_widget = QtGui.QWidget(self)
self.plot_widget = QtGui.QWidget(self.main_widget)
self.plot_widget.setGeometry(250,180,500,600)
self.figure = plt.figure()
self.plotting = FigureCanvas(self.figure)
self.plot()
plot_box = QtGui.QVBoxLayout()
plot_box.addWidget(self.plotting)
self.plot_widget.setLayout(plot_box)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.