def __init__(self): QMainWindow.__init__(self) widget = QWidget(self) self.setCentralWidget(widget) self.hbox = QHBoxLayout(widget) self.vbox = QVBoxLayout() self.hbox.addLayout(self.vbox) self.lineEdit = QLineEdit() self.lookupButton = QPushButton(self.tr("Lookup")) self.vbox.addWidget(self.lineEdit) self.vbox.addWidget(self.lookupButton) self.numPadLayout = QGridLayout() gridHSpacing = 0 self.numPadLayout.setHorizontalSpacing(gridHSpacing) singleButtonWidth = 58 button1 = self.createNumKey("1", singleButtonWidth) button2 = self.createNumKey("2", singleButtonWidth) button3 = self.createNumKey("3", singleButtonWidth) button4 = self.createNumKey("4", singleButtonWidth) button5 = self.createNumKey("5", singleButtonWidth) button6 = self.createNumKey("6", singleButtonWidth) button7 = self.createNumKey("7", singleButtonWidth) button8 = self.createNumKey("8", singleButtonWidth) button9 = self.createNumKey("9", singleButtonWidth) button0 = self.createNumKey("0", 2 * singleButtonWidth + gridHSpacing) buttonCE = self.createNumKey("CE", singleButtonWidth) self.numPadLayout.addWidget(button7, 0, 0, 1, 1) self.numPadLayout.addWidget(button8, 0, 1, 1, 1) self.numPadLayout.addWidget(button9, 0, 2, 1, 1) self.numPadLayout.addWidget(button4, 1, 0, 1, 1) self.numPadLayout.addWidget(button5, 1, 1, 1, 1) self.numPadLayout.addWidget(button6, 1, 2, 1, 1) self.numPadLayout.addWidget(button1, 2, 0, 1, 1) self.numPadLayout.addWidget(button2, 2, 1, 1, 1) self.numPadLayout.addWidget(button3, 2, 2, 1, 1) self.numPadLayout.addWidget(button0, 3, 0, 1, 2) self.numPadLayout.addWidget(buttonCE, 3, 2, 1, 1) self.numPadLayout.setHorizontalSpacing(gridHSpacing) self.vbox.addLayout(self.numPadLayout) self.vbox.addStretch() self.table = StockMatchTableView() self.hbox.addWidget(self.table) self.model = StockMatchTableModel() self.delegate = StockMatchTableDelegate() self.table.setModel(self.model) self.table.setItemDelegate(self.delegate) self.stockMatcher = StockMatchGoogleFinance() self.hbox.setStretchFactor(self.vbox, 1) self.hbox.setStretchFactor(self.table, 10) self.setWindowTitle(self.tr("Stock Matcher")) self.connect(self.lineEdit, SIGNAL("returnPressed()"), self.lookupButton.click) self.connect(self.lookupButton, SIGNAL("clicked()"), self.processNewQuery) self.connect(button0, SIGNAL("pressed()"), lambda: self.pressedNum(0)) self.connect(button1, SIGNAL("pressed()"), lambda: self.pressedNum(1)) self.connect(button2, SIGNAL("pressed()"), lambda: self.pressedNum(2)) self.connect(button3, SIGNAL("pressed()"), lambda: self.pressedNum(3)) self.connect(button4, SIGNAL("pressed()"), lambda: self.pressedNum(4)) self.connect(button5, SIGNAL("pressed()"), lambda: self.pressedNum(5)) self.connect(button6, SIGNAL("pressed()"), lambda: self.pressedNum(6)) self.connect(button7, SIGNAL("pressed()"), lambda: self.pressedNum(7)) self.connect(button8, SIGNAL("pressed()"), lambda: self.pressedNum(8)) self.connect(button9, SIGNAL("pressed()"), lambda: self.pressedNum(9)) self.connect(buttonCE, SIGNAL("pressed()"), self.pressedCE) self.table.resizeRowsToContents() self.table.resizeColumnsToContents() changeAppLocaleAction = QAction(self.tr("Change language"), self) self.connect(changeAppLocaleAction, SIGNAL("triggered()"), self.changeLocale) changeUrlAction = QAction(self.tr("Change Google Finance URL"), self) self.connect(changeUrlAction, SIGNAL("triggered()"), self.changeUrl) menuBar = QMenuBar() menuBar.addAction(changeAppLocaleAction) menuBar.addAction(changeUrlAction) self.setMenuBar(menuBar)
class SMMainWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) widget = QWidget(self) self.setCentralWidget(widget) self.hbox = QHBoxLayout(widget) self.vbox = QVBoxLayout() self.hbox.addLayout(self.vbox) self.lineEdit = QLineEdit() self.lookupButton = QPushButton(self.tr("Lookup")) self.vbox.addWidget(self.lineEdit) self.vbox.addWidget(self.lookupButton) self.numPadLayout = QGridLayout() gridHSpacing = 0 self.numPadLayout.setHorizontalSpacing(gridHSpacing) singleButtonWidth = 58 button1 = self.createNumKey("1", singleButtonWidth) button2 = self.createNumKey("2", singleButtonWidth) button3 = self.createNumKey("3", singleButtonWidth) button4 = self.createNumKey("4", singleButtonWidth) button5 = self.createNumKey("5", singleButtonWidth) button6 = self.createNumKey("6", singleButtonWidth) button7 = self.createNumKey("7", singleButtonWidth) button8 = self.createNumKey("8", singleButtonWidth) button9 = self.createNumKey("9", singleButtonWidth) button0 = self.createNumKey("0", 2 * singleButtonWidth + gridHSpacing) buttonCE = self.createNumKey("CE", singleButtonWidth) self.numPadLayout.addWidget(button7, 0, 0, 1, 1) self.numPadLayout.addWidget(button8, 0, 1, 1, 1) self.numPadLayout.addWidget(button9, 0, 2, 1, 1) self.numPadLayout.addWidget(button4, 1, 0, 1, 1) self.numPadLayout.addWidget(button5, 1, 1, 1, 1) self.numPadLayout.addWidget(button6, 1, 2, 1, 1) self.numPadLayout.addWidget(button1, 2, 0, 1, 1) self.numPadLayout.addWidget(button2, 2, 1, 1, 1) self.numPadLayout.addWidget(button3, 2, 2, 1, 1) self.numPadLayout.addWidget(button0, 3, 0, 1, 2) self.numPadLayout.addWidget(buttonCE, 3, 2, 1, 1) self.numPadLayout.setHorizontalSpacing(gridHSpacing) self.vbox.addLayout(self.numPadLayout) self.vbox.addStretch() self.table = StockMatchTableView() self.hbox.addWidget(self.table) self.model = StockMatchTableModel() self.delegate = StockMatchTableDelegate() self.table.setModel(self.model) self.table.setItemDelegate(self.delegate) self.stockMatcher = StockMatchGoogleFinance() self.hbox.setStretchFactor(self.vbox, 1) self.hbox.setStretchFactor(self.table, 10) self.setWindowTitle(self.tr("Stock Matcher")) self.connect(self.lineEdit, SIGNAL("returnPressed()"), self.lookupButton.click) self.connect(self.lookupButton, SIGNAL("clicked()"), self.processNewQuery) self.connect(button0, SIGNAL("pressed()"), lambda: self.pressedNum(0)) self.connect(button1, SIGNAL("pressed()"), lambda: self.pressedNum(1)) self.connect(button2, SIGNAL("pressed()"), lambda: self.pressedNum(2)) self.connect(button3, SIGNAL("pressed()"), lambda: self.pressedNum(3)) self.connect(button4, SIGNAL("pressed()"), lambda: self.pressedNum(4)) self.connect(button5, SIGNAL("pressed()"), lambda: self.pressedNum(5)) self.connect(button6, SIGNAL("pressed()"), lambda: self.pressedNum(6)) self.connect(button7, SIGNAL("pressed()"), lambda: self.pressedNum(7)) self.connect(button8, SIGNAL("pressed()"), lambda: self.pressedNum(8)) self.connect(button9, SIGNAL("pressed()"), lambda: self.pressedNum(9)) self.connect(buttonCE, SIGNAL("pressed()"), self.pressedCE) self.table.resizeRowsToContents() self.table.resizeColumnsToContents() changeAppLocaleAction = QAction(self.tr("Change language"), self) self.connect(changeAppLocaleAction, SIGNAL("triggered()"), self.changeLocale) changeUrlAction = QAction(self.tr("Change Google Finance URL"), self) self.connect(changeUrlAction, SIGNAL("triggered()"), self.changeUrl) menuBar = QMenuBar() menuBar.addAction(changeAppLocaleAction) menuBar.addAction(changeUrlAction) self.setMenuBar(menuBar) def changeLocale(self): localeDialog = AppLocaleSetupDialog(self) localeDialog.show() def changeUrl(self): gfDialog = GoogleFinanceUrlSetupDialog(self) gfDialog.show() def pressedCE(self): self.lineEdit.clear() def pressedNum(self, num): old = self.lineEdit.text() numStr = str(num) self.lineEdit.setText(old + numStr) def createNumKey(self, numStr, width): btn = QPushButton(numStr) btn.setMinimumWidth(width) btn.setMaximumWidth(width) return btn def processNewQuery(self): queryString = self.lineEdit.text() qDebug("processNewQuery %s" % (queryString)) self.setBusyStatus(True) matches = self.stockMatcher.match(queryString) if matches is None: self.model.clear() else: self.model.reset(matches) self.setBusyStatus(False) self.table.resizeRowsToContents() self.table.resizeColumnsToContents() self.lineEdit.setFocus(True) def setBusyStatus(self, busy): try: self.setAttribute(Qt.WA_Maemo5ShowProgressIndicator, busy) from PyQt4.QtGui import QApplication QApplication.processEvents() except AttributeError: qDebug("Can't use WA_Maemo5ShowProgressIndicator")