python嵌入到qt_在Qt图形用户界面中嵌入绘图

vpython的FAQs声称vpython的体系结构使任何嵌入都成为一个问题…:

Q:有没有办法在另一个环境中嵌入VPython?This is difficult because VPython has

two threads, your computational thread

and a rendering thread which about 25

times per second paints the scene

using the current attributes of the

graphics objects. However, Stef

Mientki has managed to embed VPython

in a wxPython window on Windows; see

the contributed section.

因此,如果使用wxPython需要付出巨大的努力(“has managed to”听起来不是一个微不足道的成就;-)并且只在一个平台上工作,那么使用Qt恐怕不会更容易。。。在每个平台上分别进行一次艰难的上坡训练。在

如果您正准备迎接一个严峻的挑战,非常熟悉vpython,相当熟悉Qt,并且熟悉您关心的所有平台上的底层窗口级架构(以及wxPython中的一个小版本),那么从Mientki的惊人贡献开始。实际上,他在wxPython的抽象级别下工作得很好,在win32gui调用中,win32con常量,加上“一个由wx定时器“在100毫秒时(尽管他承认后一次弗兰肯斯坦手术的结果是……”—“不完美”)。非常相似的方法应该可以让您在Windows上的任何其他框架上找到归宿(以类似的“不完美”的方式),包括Qt。在

然而,目前还没有人向macosx提供这样的端口,也没有人向Linux和Unix类架构上流行的许多窗口管理器提供这种端口(我不确定是否可以在xlib级别的窗口装饰方面实现这一壮举,而且在X11世界中,它们确实需要窗口管理器的合作)。在

所以,你的问题的字面回答是,“大量的工作需要大量的技能和/或难以置信的毅力,并且可能以依赖于平台的方式在每个感兴趣的平台上重做”。。。很抱歉告诉你一个很坏的消息,但我更喜欢按我所见打电话给他们。在

您可以使用Matplotlib的Qt插件来将Matplotlib图形嵌入Qt应用程序。下面是一个简单的示例代码,演示了如何在Qt窗口显示Matplotlib图形: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() # 创建一个Qt窗口部件并设置布局 self.central_widget = QWidget(self) self.setCentralWidget(self.central_widget) self.layout = QVBoxLayout(self.central_widget) # 创建一个Matplotlib Figure对象和一个Canvas部件 self.figure = Figure() self.canvas = FigureCanvas(self.figure) # 将Canvas添加到布局 self.layout.addWidget(self.canvas) # 调用绘图函数 self.plot() def plot(self): # 在Figure上绘制图形 ax = self.figure.add_subplot(111) ax.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16]) # 更新图形 self.canvas.draw() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 上述代码创建了一个继承自QMainWindow的主窗口类MainWindow,其包含一个垂直布局和一个Matplotlib Canvas部件。在plot()方法,我们使用Matplotlib在Figure上创建了一个简单的折线图,并通过调用canvas.draw()方法来更新图形。 您可以根据自己的需求进行修改和扩展,例如添加更多的Matplotlib图形和交互功能。希望这可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值