1. PyQt5的异常无法显示, 一直很头痛,今天查阅资料, 发现使用cgitb可以正常打印异常, 在主文件中添加如下代码即可.
import cgitb
cgitb.enable()
2. 闲逛github, 发现一个基于PyQt(Pyside)的超酷炫的绘图库pyqtgraph, 其组件基本都是继承自PyQt的QObject, 能够直接当作PyQt的组件使用.
首先创建widget, 和PyQt类似:
#pyqtgraph_first
import numpy as np
import pyqtgraph as pg
class MyGraphicWidget(pg.GraphicsLayoutWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.resize(500, 300)
self.setWindowTitle('pyqtgraph-example')
self.addgraph()
def addgraph(self):
self.plot1 = self.addPlot(title='first plotting', y=np.random.normal(size=100))
x1 = np.random.normal(size=100)
x2 = np.random.normal(size=110) + 5
x3 = np.random.normal(size=120) + 10
self.plot2 = self.addPlot(title='second plotting')
self.plot2.plot(x1, pen=[255, 0, 0], name='red')
self.plot2.plot(x2, pen=[0, 255, 0], name='green')
self.plot2.plot(x3, pen=[0, 0, 255], name='blue')
然后将以上组件当作PyQt组件引入,并布局:
from pyqtgraph_first import MyGraphicWidget
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
import cgitb
cgitb.enable()
class Ui_MainWindow:
def setupUi(self, MainWindow):
MainWindow.setObjectName("Form")
MainWindow.showMaximized()
self.graph = MyGraphicWidget(parent=MainWindow, show=True, title='plot!')
self.graph.resize(800, 500)
self.graph.setBackground('k')
self.graph.setGeometry(QtCore.QRect(105, 105, 1400, 700))
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
MainWindow =QMainWindow()
ui_window = Ui_MainWindow()
ui_window.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
执行后得到的图像如下, 在图像上, 可以通过鼠标进行坐标轴的拖动, 曲线的缩小放大, 保存导出等功能.