... für Linux Mint 19 und andere.QtQR-Version 1.4-bzr23-1
Offensichtlich hat der Entwickler von
QtQR bei der Erweiterung auf Unicode Funktionen und Attribute weiterverwendet, die dafür nicht erlaubt sind.
Zur Korrektur sind eigentlich Änderungen am
QtQR-Skript notwendig. Das Skript steht in der Datei
/usr/bin/qtqr und kann dort nur mit Admin-Recht bearbeitet werden.
Wer das nicht will, kann die Datei
qtqr von hier in sein Homeverzeichnis, Unterverzeichnis
bin kopieren,
also nach
~/bin (bzw.
/home/{benutzer}/bin).
(Sollte das Verzeichnis
bin dort noch gar nicht existieren, kann man es einfach anlegen.).
An dieser Kopie ändert man. (Nach dem erstmaligen Anlegen der Datei
qtqr in
bin ist ausnahmsweise einmal ein System-Neustart zu empfehlen.)
Dieses in
~/bin liegende Skript wird automatisch statt des in
/usr/bin liegendem benutzt.
Soll die Korrektur für mehrere Benutzer wirksam sein, ist die Änderung an
/usr/bin/qtqr natürlich das Richtige.
- Lesen (Scannen) eines vorhandenen QR-Codes:
Das Scannen mit Kamera ( "Dekodieren – Dekodiere von Webcam" oder "Strg+W") funktioniert.
Für das Leses aus einem in einer Datei gespeicherten QR-Code werden 2 Möglichkeiten angeboten; beide funktionieren nicht.
- Knopf "Dekodieren – Dekodiere von einer Datei" oder "Strg+O" :
Es erscheint ein übliches Dateiauswahlfenster. Nach Dateiauswahl dort und "Öffnen" schließt das Auswahlfenster und es tut sich: nichts.
- Drag & Drop; dh. die Dateibezeichnung aus einem Dateimanager mit der Maus (linke Taste) in die rechte Hälfte des QtQR-Fensters ziehen und loslassen:
Es tut sich: nichts.
Die folgende Korrektur behebt beide Fehler:
In der Funktion def decodeFile(self, fn=None) ersetze die Zeilen 536 - 541 durch:
-----------------------------------------------------
def decodeFile(self, fn=None):
if not fn:
fn = QtWidgets.QFileDialog.getOpenFileName(
self,
self.tr('Open QRCode'),
filter=self.tr('Images (*.png *.jpg);; All Files (*.*)')
)
fn = unicode(fn[0])
-----------------------------------------------------
In Kommentaren im Internet findet man für den Fehler beim Drag&Drop die Empfehlung, in der Datei /usr/lib/python2.7/dist-packages/qrtools.py
die Funktion tostring() durch die Funktion tobytes() zu ersetzen (Admin-Recht!). Dies ist nicht (mehr) notwendig, zumindest wohl in neueren Updates.
Denn an der genannten Stelle steht jetzt eine try-except-Weiche mit beiden Funktionen.
- Erzeugen eines QR-Codes
(Ich habe nur die Variante "Text" ausprobiert: Einstellung "Datentyp wählen: Text")
Ich schreibe im linken Teil des QtQR-Fenster einen Text. Parallel dazu entsteht im rechten Teil der gewünschte QR-Code.
Dann Knopf "QRCode Speichern" : Es erscheint ein Dateiauswahlfenster zur Angabe des Speicherziels. Dann "Speichern":
Das ganze QtQR-Fenster schließt; weiter tut sich nicht. Eine Bilddatei mit dem QR-Code ist nicht zu finden.
Der Fehler ist im wesentlichen derselbe wie beim Dekodieren von einer Datei. Es ist auch hier die Datei qtqr zu ändern.
In der Funktion saveCode(self) ersetze die Zeilen 498 - 519 durch:
-----------------------------------------------------
def saveCode(self):
import string
filterStr = ""
for saveType in QR().get_qrencode_types():
filterStr += ( saveType + "(*." + saveType.lower() + ");;")
fn = QtWidgets.QFileDialog.getSaveFileName(
self,
self.tr('Save QRCode'),
filter=filterStr
)
if fn[0]!="":
fnx=".png"
for saveType in QR().get_qrencode_types():
if string.find(fn[1],"."+saveType.lower())!=-1:
fnx = "."+saveType.lower()
fn = fn[0]+fnx
self.qrencode(unicode(fn))
-----------------------------------------------------
Geschrieben: Oktober 2018 – Letzte Änderung: 04.01.2024