From c86201dc5b6b5e60b4b54b11af0297365ce41f5b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 28 Nov 2016 17:56:32 +0100 Subject: [PATCH] add Qt5 support for PinMatrixWidget --- trezorlib/qt/pinmatrix.py | 40 +++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/trezorlib/qt/pinmatrix.py b/trezorlib/qt/pinmatrix.py index ce2a7c6958..768f6b59a3 100644 --- a/trezorlib/qt/pinmatrix.py +++ b/trezorlib/qt/pinmatrix.py @@ -1,9 +1,17 @@ from __future__ import print_function import sys import math -from PyQt4.QtGui import (QPushButton, QLineEdit, QSizePolicy, QRegExpValidator, QLabel, - QApplication, QWidget, QGridLayout, QVBoxLayout, QHBoxLayout) -from PyQt4.QtCore import QObject, SIGNAL, QRegExp, Qt + +try: + from PyQt4.QtGui import (QPushButton, QLineEdit, QSizePolicy, QRegExpValidator, QLabel, + QApplication, QWidget, QGridLayout, QVBoxLayout, QHBoxLayout) + from PyQt4.QtCore import QObject, SIGNAL, QRegExp, Qt, QT_VERSION_STR +except: + from PyQt5.QtWidgets import (QPushButton, QLineEdit, QSizePolicy, QLabel, + QApplication, QWidget, QGridLayout, QVBoxLayout, QHBoxLayout) + from PyQt5.QtGui import QRegExpValidator + from PyQt5.QtCore import QRegExp, Qt + from PyQt5.Qt import QT_VERSION_STR class PinButton(QPushButton): def __init__(self, password, encoded_value): @@ -11,7 +19,12 @@ class PinButton(QPushButton): self.password = password self.encoded_value = encoded_value - QObject.connect(self, SIGNAL('clicked()'), self._pressed) + if QT_VERSION_STR >= '5': + self.clicked.connect(self._pressed) + elif QT_VERSION_STR >= '4': + QObject.connect(self, SIGNAL('clicked()'), self._pressed) + else: + raise Exception('Unsupported Qt version') def _pressed(self): self.password.setText(self.password.text() + str(self.encoded_value)) @@ -31,7 +44,13 @@ class PinMatrixWidget(QWidget): self.password = QLineEdit() self.password.setValidator(QRegExpValidator(QRegExp('[1-9]+'), None)) self.password.setEchoMode(QLineEdit.Password) - QObject.connect(self.password, SIGNAL('textChanged(QString)'), self._password_changed) + + if QT_VERSION_STR >= '5': + self.password.textChanged.connect(self._password_changed) + elif QT_VERSION_STR >= '4': + QObject.connect(self.password, SIGNAL('textChanged(QString)'), self._password_changed) + else: + raise Exception('Unsupported Qt version') self.strength = QLabel() self.strength.setMinimumWidth(75) @@ -86,7 +105,7 @@ if __name__ == '__main__': ''' Demo application showing PinMatrix widget in action ''' - a = QApplication(sys.argv) + app = QApplication(sys.argv) matrix = PinMatrixWidget() @@ -96,7 +115,12 @@ if __name__ == '__main__': sys.exit() ok = QPushButton('OK') - QObject.connect(ok, SIGNAL('clicked()'), clicked) + if QT_VERSION_STR >= '5': + ok.clicked.connect(clicked) + elif QT_VERSION_STR >= '4': + QObject.connect(ok, SIGNAL('clicked()'), clicked) + else: + raise Exception('Unsupported Qt version') vbox = QVBoxLayout() vbox.addWidget(matrix) @@ -107,4 +131,4 @@ if __name__ == '__main__': w.move(100, 100) w.show() - a.exec_() + app.exec_()