From d7f15ef8f1411db89585f9541198896de5924fc8 Mon Sep 17 00:00:00 2001 From: trondeau Date: Sat, 18 Apr 2009 03:14:34 +0000 Subject: [PATCH] Using qt's designer program to build an interface from the .ui file. This makes qt_digital.py example look much better. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10878 221aa14e-8319-0410-a670-987f0aec2ac5 --- gr-qtgui/src/python/qt_digital.py | 89 ++++------- gr-qtgui/src/python/qt_digital_window.ui | 191 +++++++++++++++++++++++ 2 files changed, 223 insertions(+), 57 deletions(-) create mode 100644 gr-qtgui/src/python/qt_digital_window.ui diff --git a/gr-qtgui/src/python/qt_digital.py b/gr-qtgui/src/python/qt_digital.py index 2583bf1d..ead540c5 100755 --- a/gr-qtgui/src/python/qt_digital.py +++ b/gr-qtgui/src/python/qt_digital.py @@ -6,74 +6,48 @@ from PyQt4 import QtGui, QtCore import sys, sip import scipy -class dialog_box(QtGui.QWidget): - def __init__(self, display_tx, display_rx, channel): - QtGui.QWidget.__init__(self, None) - self.setWindowTitle('Digital Signal Examples') - - self.control = control_panel(channel, self) - - hlayout = QtGui.QHBoxLayout() - hlayout.addWidget(display_tx) - hlayout.addWidget(display_rx) - hlayout.setGeometry(QtCore.QRect(0,0,100,100)) - - vlayout = QtGui.QVBoxLayout() - vlayout.addLayout(hlayout) - vlayout.addLayout(self.control.layout, -1) - #vlayout.addStretch(-1) - - self.setLayout(vlayout) - self.resize(1000, 1000) - -class control_panel(QtGui.QWidget): - def __init__(self, channel, parent=None): +try: + from qt_digital_window import Ui_DigitalWindow +except ImportError: + print "Error: could not find qt_digital_window.py:" + print "\t\"pyuic4 qt_digital_window.ui -o qt_digital_window.py\"" + sys.exit(1) + +class dialog_box(QtGui.QMainWindow): + def __init__(self, snkTx, snkRx, channel, parent=None): QtGui.QWidget.__init__(self, parent) - self.setWindowTitle('Control Panel') + self.gui = Ui_DigitalWindow() + self.gui.setupUi(self) self.channel = channel - - self.layout = QtGui.QFormLayout() - # Set channel noise - self.noiseEdit = QtGui.QLineEdit(self) - self.layout.addRow("Noise Amplitude:", self.noiseEdit) - self.connect(self.noiseEdit, QtCore.SIGNAL("editingFinished()"), - self.noiseEditText) + # Add the qtsnk widgets to the hlayout box + self.gui.sinkLayout.addWidget(snkTx) + self.gui.sinkLayout.addWidget(snkRx) - # Set channel frequency offset - self.freqEdit = QtGui.QLineEdit(self) - self.layout.addRow("Frequency Offset:", self.freqEdit) - self.connect(self.freqEdit, QtCore.SIGNAL("editingFinished()"), + # Connect up some signals + self.connect(self.gui.noiseEdit, QtCore.SIGNAL("editingFinished()"), + self.noiseEditText) + self.connect(self.gui.freqEdit, QtCore.SIGNAL("editingFinished()"), self.freqEditText) - - # Set channel timing offset - self.timeEdit = QtGui.QLineEdit(self) - self.layout.addRow("Timing Offset:", self.timeEdit) - self.connect(self.timeEdit, QtCore.SIGNAL("editingFinished()"), + self.connect(self.gui.timeEdit, QtCore.SIGNAL("editingFinished()"), self.timeEditText) - - self.quit = QtGui.QPushButton('Close', self) - self.layout.addRow(self.quit) - - self.connect(self.quit, QtCore.SIGNAL('clicked()'), - QtGui.qApp, QtCore.SLOT('quit()')) - + def set_noise(self, noise): self.noise = noise - self.noiseEdit.setText(QtCore.QString("%1").arg(self.noise)) + self.gui.noiseEdit.setText(QtCore.QString("%1").arg(self.noise)) def set_frequency(self, freq): self.freq = freq - self.freqEdit.setText(QtCore.QString("%1").arg(self.freq)) + self.gui.freqEdit.setText(QtCore.QString("%1").arg(self.freq)) def set_time_offset(self, to): self.timing_offset = to - self.timeEdit.setText(QtCore.QString("%1").arg(self.timing_offset)) + self.gui.timeEdit.setText(QtCore.QString("%1").arg(self.timing_offset)) def noiseEditText(self): try: - noise = self.noiseEdit.text().toDouble()[0] + noise = self.gui.noiseEdit.text().toDouble()[0] self.channel.set_noise_voltage(noise) self.noise = noise @@ -82,7 +56,7 @@ class control_panel(QtGui.QWidget): def freqEditText(self): try: - freq = self.freqEdit.text().toDouble()[0] + freq = self.gui.freqEdit.text().toDouble()[0] self.channel.set_frequency_offset(freq) self.freq = freq @@ -91,7 +65,7 @@ class control_panel(QtGui.QWidget): def timeEditText(self): try: - to = self.timeEdit.text().toDouble()[0] + to = self.gui.timeEdit.text().toDouble()[0] self.channel.set_timing_offset(to) self.timing_offset = to @@ -139,12 +113,13 @@ class my_top_block(gr.top_block): pyRxQt = self.snk_rx.pyqwidget() pyRx = sip.wrapinstance(pyRxQt, QtGui.QWidget) - self.main_box = dialog_box(pyTx, pyRx, channel) - self.main_box.control.set_noise(noise) - self.main_box.control.set_frequency(fo) - self.main_box.control.set_time_offset(to) - + self.main_box = dialog_box(pyTx, pyRx, channel); + self.main_box.set_noise(noise) + self.main_box.set_frequency(fo) + self.main_box.set_time_offset(to) self.main_box.show() + + if __name__ == "__main__": tb = my_top_block(); diff --git a/gr-qtgui/src/python/qt_digital_window.ui b/gr-qtgui/src/python/qt_digital_window.ui new file mode 100644 index 00000000..67b7bbe9 --- /dev/null +++ b/gr-qtgui/src/python/qt_digital_window.ui @@ -0,0 +1,191 @@ + + DigitalWindow + + + + 0 + 0 + 1236 + 655 + + + + MainWindow + + + + + + 120 + 520 + 113 + 23 + + + + + + + 10 + 520 + 111 + 20 + + + + Noise Amplitude + + + + + + 260 + 580 + 80 + 27 + + + + Close + + + + + + 120 + 550 + 113 + 23 + + + + + + + 120 + 580 + 113 + 23 + + + + + + + 10 + 550 + 101 + 17 + + + + Frequency Offset + + + + + + 10 + 580 + 101 + 17 + + + + Timing Offset + + + + + + 10 + 10 + 1221 + 501 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 10 + 10 + 1201 + 481 + + + + + + + + + + 0 + 0 + 1236 + 22 + + + + + &File + + + + + + + + + E&xit + + + + + closeButton + noiseEdit + freqEdit + timeEdit + + + + + closeButton + clicked() + DigitalWindow + close() + + + 322 + 623 + + + 66 + 561 + + + + + actionExit + triggered() + DigitalWindow + close() + + + -1 + -1 + + + 617 + 327 + + + + + -- 2.30.2