Auf dem QL-570 unter PyQT drucken

26.07.2015 - Lesezeit: 2 Minuten

Literatur:

So funktioniert es: handleQL570

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle(self.tr('Document Printer'))
        self.editor = QtGui.QTextEdit(self)
        self.editor.textChanged.connect(self.handleTextChanged)
        self.buttonQL570 = QtGui.QPushButton('QL-570', self)
        self.buttonQL570.clicked.connect(self.handleQL570)
        self.buttonPrint = QtGui.QPushButton('Print', self)
        self.buttonPrint.clicked.connect(self.handlePrint)
        self.buttonPreview = QtGui.QPushButton('Preview', self)
        self.buttonPreview.clicked.connect(self.handlePreview)
        layout = QtGui.QGridLayout(self)
        layout.addWidget(self.editor, 0, 0, 1, 3)
        layout.addWidget(self.buttonQL570, 1, 0)
        layout.addWidget(self.buttonPrint, 1, 1)
        layout.addWidget(self.buttonPreview, 1, 2)
        self.beispielText()
        self.handleTextChanged()

    def beispielText(self):
        self.editor.clear()
        self.editor.setHtml(u'Vorname Name<br>Straße<br><strong>PLZ Ort</strong>')

    def handlePrint(self):
        dialog = QtGui.QPrintDialog()
        if dialog.exec_() == QtGui.QDialog.Accepted:
            self.editor.document().print_(dialog.printer())

    def handlePreview(self):
        dialog = QtGui.QPrintPreviewDialog()
        dialog.paintRequested.connect(self.editor.print_)
        dialog.exec_()

    def handleQL570(self):
        tp = QtGui.QPrinter()
        # Es muss natürlich einen eingerichteten Drucker  mit dem Namen geben
        tp.setPrinterName('QL-570')
        # Das Setzen der Papiergröße funktioniert nicht,
        # es wir die im Druckertreiber eingestellte Papiergröße verwendet
        # Ohne Wirkung: tp.setPaperSize( QtCore.QSizeF( 29, 62 ), QtGui.QPrinter.Millimeter )
        tp.setOrientation( QtGui.QPrinter.Landscape)
        tp.setPageMargins(2,2,2,2, QtGui.QPrinter.Millimeter) 
        self.editor.document().print_(tp)

    def handleTextChanged(self):
        enable = not self.editor.document().isEmpty()
        self.buttonPrint.setEnabled(enable)
        self.buttonPreview.setEnabled(enable)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())
Tags: Python pyqt Etikettendrucker Brother QL-570

Phyton und die KDE-Brieftasche (kwallet)

29.04.2014 - Lesezeit: ~1 Minute

Literatur:

Um von Python aus Passwörter aus der KDE-Brieftasche zu lesen genügen diese paar Zeilen:

import keyring
# Setzen des Passwortes
keyring.set_password("ftp.wlsoft.de","wlsoft.de", "123")
# Lesen des Passwortes
password = keyring.get_password("ftp.wlsoft.de","wlsoft.de")

Oder hier am Beispiel eines Scripts zum Hochladen einer Datei per FTP auf diesen Server.

import keyring

KEYRING_SERVICE = "ftp.wlsoft.de"
KEYRING_USERNAME = "wlsoft.de"

def main():
    if len(sys.argv) < 2:
        sys.exit('Usage: %s filename' % sys.argv[0])
    filename = sys.argv[1]
    if not os.path.exists(filename):
        sys.exit('ERROR: File %s was not found!' % filename)
    ftp_host = KEYRING_SERVICE
    ftp_user = KEYRING_USERNAME
    #Das Passwort aus Standard-Keyring lesen (unter KDE ist das kwallet)
    ftp_pass = keyring.get_password(KEYRING_SERVICE,KEYRING_USERNAME)
    if (ftp_pass==''):
        sys.exit('Set Keyring Password for SERVICE %s USERNAME %s' % (KEYRING_SERVICE,KEYRING_USERNAME))
    ftp = FTP(ftp_host, ftp_user, ftp_pass)
    ftp.cwd("/downloads/htdocs/")
    s,n = os.path.split(filename)
    s = 'STOR %s' % (n)
    #print s
    ftp.storbinary(s, open(filename, 'rb'))
    return 0

if __name__ == '__main__':
    main()
Tags: Python KDE4 FTP

wnfKameradownload 1.12

26.01.2014 - Lesezeit: 4 Minuten

Das Script wnfkameradownload.py dient zum Herunterladen von Bildern von einer Digitalkamera für das Programm wnfAlbum.

$ sudo add-apt-repository ppa:r-dev/wnfkameradownload
$ sudo apt-get update
$ sudo apt-get install wnfkameradownload

Das Script wnfkameradownload.py kann

  • Bilder nach dem herunterladen entsprechend der exif-Daten des Bildes drehen. Dazu wir der Befehl [exifautotran](http://sylvana.net/jpegcrop/exif_orientation.html benutzt, welches in jeder Linux-Distribution vorinstalliert sein sollte. )
  • Bilder umbenennen, so dass die Dateinamen das Format vorsilbe_jjjj_mm_tt_hh_mm_ss_originalname.originalerweiterung erhalten. Das ist günstig für den Fall, dass ein Ereignis von mehreren Fotografen abgelichtet wurde. So kommen die Fotos auch für Programme, die die Fotos nach Dateinamen sortieren in die richtige Reihenfolge.
  • Bilder aus Unterverzeichnissen einer Digitalkamera herunterladen. (Also das Kameraverzeichnis am besten auf das DCIM Verzeichnis der Kamera stelle. Bei mir unter Kubuntu 9.10 ist es das Verzeichnis /media/disk/DCIM. Wenn das Programm über die KDE-Geräteüberwachung aufgerufen wird, geschieht das automatisch)
  • Bilder im Silvestermodus von der Kamera herunterladen. So werden zum Beispiel die Fotos vom Silvesterfeuerwerk nicht mehr auf den Neujahrstag verschoben.

Um das Script unter KDE 4.x einzubinden, muss für die Geräteüberwachung eine Aktion eingerichtet werden.

  • KDE-Systemeinstellungen-erweitert-Geräteaktionen-hinzufügen
  • Aktion: wnfKameraDownload
  • Befehl: pfad/wnfkameradownload.py %f
  • Parameter: Das Gerät muss ein Storagevolume (Massenspeicher) sein.

Um das Script unter Ubuntu - Gnome zu nutzen muss das Paket python-qt4 installiert sein.

Historie

26.01.2014 Version 1.12

  • Das zuletzt benutzte Zielverzeichnis zur Kamera wird sich gemerkt. (Das wirkt sich natürlich nur aus, wenn mit mehreren Kameras gearbeitet wird.)

26.12.2013 Version 1.11

  • PTP-Download umgestellt auf gphotofs (gphotofs ist beim Download schneller als piggyphoto)

19.11.2013 Version 1.09

  • Versteckte Verzeichnisse und Dateien werden jetzt ignoriert (Handys (Android) haben davon eine Menge)

17.11.2013 Version 1.08

  • Aufrufparameter -p Pfadname_auf_der_Kamera eingeführt
  • Es wird nur das DCIM verzeichnis eingelesen, wenn es als Unterverzeichnis vorhanden ist ansonsten wird das gesamte Verzeichnis eingelesen.

03.11.2013 Version 1.07

  • Der Parameter %f beim Aufruf über die KDE-Geräteüberwachung wird jetzt ausgewertet, so dass der Quellpfad beim Anschluss von verschiedenen Kameras automatisch gesetzt wird.

01.01.2011 Version 1.04

  • Aus aktuellem Anlass, wurde die Silvesterfunktion überarbeitet.

01.12.2010 Version 1.02

  • Erstveröffentlichung
Tags: Python Kubuntu 9.10 wnfAlbum wnfkameradownload Suse

bbb lighttpd und python

11.01.2014 - Lesezeit: 2 Minuten

Zum nachlesen

Kochbuch

$ sudo apt-get install lighttpd
  • diverse Änderungen in /etc/lighttpd/lighttpd.conf
    $ sudo nano /etc/lighttpd/lighttpd.conf
  • mod_cgi hinzufügen
    server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
    #       "mod_rewrite",
        "mod_cgi",
    )
  • Python dem cgi-Modul zur Verfügung stellen
    cgi.assign = ( ".py" => "/usr/bin/python" )
    static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".py" )
  • Das Verzeichnis /var/www/cgi-bin anlegen
    $ sudo mkdir /var/www/cgi-bin
$ sudo /etc/init.d/lighttpd restart
  • In diesem Verzeichnis dieses Python Script ablegen (mit freundlicher Unterstützung von planzero.org
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#http://planzero.org/blog/2012/01/26/system_uptime_in_python,_a_better_way

from datetime import timedelta

print "Content-Type: text/html"
print
print "<title>Uptime des Beaglebone Black</title>"
print "<h1>Uptime des Beaglebone Black</h1>"

with open('/proc/uptime', 'r') as f:
    uptime_seconds = float(f.readline().split()[0])
    uptime_string = str(timedelta(seconds = uptime_seconds))

print(uptime_string)

Testaufruf mit http://bone.nfix.de/cgi-bin/wnfuptime.py

Tags: Python beaglebone

Unter Suse 13.1 ein rpm Paket erstellen (wnfkameradownload)

24.11.2013 - Lesezeit: ~1 Minute

Literatur:

python setup.py bdist_rpm

liefert folgenden Fehler:


building RPMs
rpm -ba --define _topdir /tmp/erstellung/programm/build/bdist.linux-x86_64/rpm --clean build/bdist.linux-x86_64/rpm/SPECS/wnfkameradownload.spec
rpm: -ba: Unbekannte Option
error: command 'rpm' failed with exit status 1
```-
Hier die Erklärung dazu:
- http://bugs.python.org/issue11122
- python setup ruft rpm-build auf, wenn das nicht installiert ist, dann wird rpm aufgerufen und rpm kennt -ba nicht.
- Also rpm-build nach installieren . 
Tags: Python Suse rpm

Python und KDE4-Plasmoid

23.11.2013 - Lesezeit: ~1 Minute

Zur Beachtung in KDE4.2.x plasmoidviewer kann nur installierte Plasmoide anzeigen.

$ plasmoidviewer --version  
Qt: 4.5.0  
KDE: 4.2.4 (KDE 4.2.4)  
Plasma Widget Viewer: 1.0  

unter Suse 13.1 und KDE 4.11

plasma-windowed --version
Qt: 4.8.5
KDE: 4.11.2
Plasma-Shell: 0.1
Tags: Python