Text in textEdit ausrichten (Newbie)

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Works4Me
User
Beiträge: 4
Registriert: Dienstag 6. November 2012, 13:12

Hallo Forum
Ich habe erst vor kurzem mit dem Schreiben von Programmen angefangen. Meine Zielsetzung ist hierbei der Gewinn von neuen Erkenntnissen.
Ich habe ein gui mit Qt-Designer entworfen die ein textEdit enthält(Ui_textForm).

Code: Alles auswählen

#!usr/bin/python3

import sys
from PyQt4 import QtCore, QtGui                             
from textForm import Ui_textForm                   

class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_textForm()
        self.ui.setupUi(self)
        self.ui.textEdit.setFontPointSize(12)
        self.ui.textEdit.append("hallo")
        self.ui.textEdit.setFontPointSize(8)
        self.ui.textEdit.setAlignment(Qt::AlignRight)
        self.ui.textEdit.append("welt")
 
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = MyForm()
    myapp.show()
    sys.exit(app.exec_())
Mein „Hallo Welt“ wird auch erwartungsgemäß angezeigt (also „hallo“ groß und „welt“ klein).
Jetzt möchte ich, das der zweite text auf der rechten Seite des textEdit Elements erscheint.
Mein Ansatz mit setAlignment scheint aber falsch zu sein.
Die Fehlermeldung lautet:

Code: Alles auswählen

  File "prog1.py", line 18
    self.ui.textEdit.setAlignment(Qt::AlignRight)
                    
SyntaxError: invalid syntax
Ich steh jetzt schon 2 Tage auf dem Schlauch und sehe wohl den Wald nicht mehr.
Wie ist hier die richtige Syntax?
Danke für Eure Mühen
Works4Me
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Du vermischt hier C++ mit Python. Qt::AlignRight bedeutet in C++, ganz grob, dass im Namensraum Qt nach dem Namen AlignRight gesucht wird. Ich kenne mich ehrlich gesagt nicht mit PyQt4 aus, meine mich aber zu erinnern, dass die Namen recht direkt übernommen wurden. Versuche das Qt::AlignRight mal durch ein QtCore.Qt.AlignRight zu ersetzen. Eine kurze Suche mit Google scheint das zu bestätigen.
Zuletzt geändert von EyDu am Dienstag 6. November 2012, 15:27, insgesamt 2-mal geändert.
Das Leben ist wie ein Tennisball.
Works4Me
User
Beiträge: 4
Registriert: Dienstag 6. November 2012, 13:12

Hallo EyDu
Dein Vorschlag bringt folgende Fehlermeldung:

Code: Alles auswählen

  File "prog1.py", line 16, in __init__
    self.ui.textEdit.setAlignment(QtCore.AlignRight)
AttributeError: 'module' object has no attribute 'AlignRight'
Die Google-Suche durchforste ich jetzt schon seit einiger Zeit und habe auch schon einige Varianten ausprobiert. Die Doku von PyQt schreibt zu setAlignment:

QTextEdit.setAlignment (self, Qt.Alignment a)
This method is also a Qt slot with the C++ signature void setAlignment(Qt::Alignment).
Sets the alignment of the current paragraph to a. Valid alignments are Qt.AlignLeft, Qt.AlignRight, Qt.AlignJustify and Qt.AlignCenter (which centers horizontally).

Ich habe allerdigs Schwierigkeiten die Syntax der Doku zu verstehen. So wie ich es verstehe ist diese Methode für das Ausrichten des textEdit im angezeigtem Widget und nicht für die Ausrichtung des Textes im textEdit.
Trotzdem Danke das Du Deine Zeit einem unwissenden widmest.

Works4Me
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Du suchst `PyQt4.QtCore.Qt.AlignRight`.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Edit: So geht das aber nicht, einfach eine Minute vorher posten ^^
Zuletzt geändert von EyDu am Dienstag 6. November 2012, 15:26, insgesamt 2-mal geändert.
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Vielleicht borgt dir Guido ja seine Zeitmaschine ;)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

cofi hat geschrieben:Vielleicht borgt dir Guido ja seine Zeitmaschine ;)
Danke für den Hinweis, leider bin ich in der Bedienung nicht so gut. Jetzt steht die Antwort doch tatsächlich vor der zweiten Frage :D
Das Leben ist wie ein Tennisball.
Works4Me
User
Beiträge: 4
Registriert: Dienstag 6. November 2012, 13:12

Da hab ich wohl Tomaten auf den Augen gehabt. Richtig ist tatsächlich:

Code: Alles auswählen

self.ui.textEdit.setAlignment(QtCore.Qt.AlignRight)
Leider gilt dies für das gesamte textEdit. Ich möchte aber den ersten Text links und den zweiten rechts haben. Gibt es auch dafür eine Möglichkeit?

Works4Me
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Works4Me hat geschrieben:Da hab ich wohl Tomaten auf den Augen gehabt.
Nee, vorher stand in meinem Post noch QtCore.AlignRight, ich habe allerdings eine Zeitreise vorgenommen (Edit) und meinen Beitrag angepasst ;-)
Das Leben ist wie ein Tennisball.
Antworten