怎么将一个无ui的python程序改成一个有ui的python程序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么将一个无ui的python程序改成一个有ui的python程序?相关的知识,希望对你有一定的参考价值。
参考技术A 重写程序就好了 参考技术B 首先你得选择一个ui库,比如tk,qt之类追问使用pyqt5,我不知道怎么把我原来的那些类用到里面去
追答如果以前的程序没界面还能运行得很好,说明本身就是不需要交互的对吧,一般大部了有些配置文件或者命令行参数,所以带gui运行的话把相应的输入和输出放到gui就可以了
追问好的
如何在 python 程序的简单 UI 中显示实时图形?
【中文标题】如何在 python 程序的简单 UI 中显示实时图形?【英文标题】:How do I display real-time graphs in a simple UI for a python program? 【发布时间】:2011-05-06 23:51:03 【问题描述】:我有一个复杂的算法来更新存储在数组中的 3 个直方图。我想调试我的算法,所以我想在用户界面中将数组显示为直方图。最简单的方法是什么。 (快速应用开发比优化代码更重要。)
我有一些使用 Qt(C++)的经验和一些使用 matplotlib 的经验。
(我将把这个问题留一两天,因为如果没有更多我没有的经验,我很难评估解决方案。希望社区的投票将有助于选择最佳答案.)
【问题讨论】:
如果您追求快速开发,我推荐 Tkinter。它比 PyQt 更直观的 IMO。 @Neil:这里有一个制作动画图的例子:***.com/questions/4098131/matplotlib-update-a-plot/…。也许这会对你有所帮助? @unutbu nice +1,你为什么不回答? @Bernardo:这是 Joe Kington 的回答,所以他值得称赞 :) @unutbu 请添加它,因为他不在这里添加它。无论如何,阅读问题并建立联系是值得称赞的。 【参考方案1】:编辑:如今,使用matplotlib.animation
更容易更好:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def animate(frameno):
x = mu + sigma * np.random.randn(10000)
n, _ = np.histogram(x, bins, normed=True)
for rect, h in zip(patches, n):
rect.set_height(h)
return patches
mu, sigma = 100, 15
fig, ax = plt.subplots()
x = mu + sigma * np.random.randn(10000)
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='green', alpha=0.75)
ani = animation.FuncAnimation(fig, animate, blit=True, interval=10,
repeat=True)
plt.show()
有一个制作动画图表的例子here。 在此示例的基础上,您可以尝试以下操作:
import numpy as np
import matplotlib.pyplot as plt
plt.ion()
mu, sigma = 100, 15
fig = plt.figure()
x = mu + sigma*np.random.randn(10000)
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='green', alpha=0.75)
for i in range(50):
x = mu + sigma*np.random.randn(10000)
n, bins = np.histogram(x, bins, normed=True)
for rect,h in zip(patches,n):
rect.set_height(h)
fig.canvas.draw()
通过这种方式,我每秒可以得到大约 14 帧,而使用代码 I first posted 每秒可以得到 4 帧。诀窍是避免要求 matplotlib 绘制完整的图形。而是调用plt.hist
一次,然后操作patches
中现有的matplotlib.patches.Rectangle
s 来更新直方图,然后调用
fig.canvas.draw()
使更新可见。
【讨论】:
这很好用,但绘图窗口没有响应或自行关闭.. 有什么建议吗? @DevC:现在最好使用matplotlib.animation
。我在上面添加了一个示例。
这里您可以找到示例动画视频:jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial
如何使用带有 opencv python 的网络摄像头进行实时情绪检测?【参考方案2】:
对于实时绘图,我建议尝试 Chaco、pyqtgraph 或任何基于 opengl 的库,如 glumpy 或 visvis。 Matplotlib 虽好,但一般不适合这种应用。
编辑:glumpy、visvis、galry 和 pyqtgraph 的开发人员都在合作开发一个名为 vispy 的可视化库。它仍处于开发初期,但前景广阔且已经相当强大。
【讨论】:
vispy website 包含几个应用程序的图库以及与这些应用程序对应的代码。【参考方案3】:我建议在交互模式下使用 matplotlib,如果你调用一次.show
,它会在自己的窗口中弹出,如果你不这样做,那么它只存在于内存中,并且可以在你调用时写入文件完成了。
【讨论】:
【参考方案4】:哦,现在明白了,当您说实时时,您的意思是您想要高于 5 Hz 的刷新率,matplotlib 无法完成这项工作。我之前遇到过这个问题,我选择了与 PyQt 配合使用的 PyQwt。
【讨论】:
PyQwt 目前被认为是未维护的。希望将来会有所改变,但现在要小心..以上是关于怎么将一个无ui的python程序改成一个有ui的python程序?的主要内容,如果未能解决你的问题,请参考以下文章