pygrwidgetqt5_exΒΆ
GR / PyQt5 interoperability example
import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
import gr
from gr.pygr import readfile
from qtgr import GRWidget
class GraphicsWidget(GRWidget):
def __init__(self, *args, **kwargs):
super(GraphicsWidget, self).__init__(*args, **kwargs)
self._draw_graphics = False
self.setupUi()
def setupUi(self):
self.setWindowTitle("GRWidget Demo")
self.resize(500, 500)
self.DrawButton = QtWidgets.QPushButton(self)
self.DrawButton.setText("Draw")
self.DrawButton.setGeometry(290, 5, 100, 25)
self.QuitButton = QtWidgets.QPushButton(self)
self.QuitButton.setText("Quit")
self.QuitButton.setGeometry(395, 5, 100, 25)
self.DrawButton.clicked.connect(self.set_draw_flag)
self.QuitButton.clicked.connect(self.quit)
def quit(self):
gr.emergencyclosegks()
self.close()
def draw(self):
if not self._draw_graphics:
return
x = range(0, 128)
y = range(0, 128)
z = readfile(os.path.join(os.path.dirname(os.path.realpath(__file__)),
"kws.dat"), separator='$')
zrange = max(z) - min(z)
h = [min(z) + i * 0.025 * zrange for i in range(0, 40)]
gr.setviewport(0.075, 0.95, 0.075, 0.95)
gr.setwindow(1, 128, 1, 128)
gr.setspace(min(z), max(z), 0, 90)
gr.setcharheight(0.018)
gr.setcolormap(-3)
gr.surface(x, y, z, 5)
gr.contour(x, y, h, z, -1)
gr.axes(5, 5, 1, 1, 2, 2, 0.0075)
def set_draw_flag(self):
self._draw_graphics = True
self.update()
def paintEvent(self, ev):
super(GraphicsWidget, self).paintEvent(ev)
painter = QtGui.QPainter(self)
painter.drawText(15, 15, "Contour Example using PyQt5/GRWidget ...")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = GraphicsWidget()
w.show()
sys.exit(app.exec_())