Seite 1 von 1

Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 13:30
von Works4Me
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

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 13:35
von EyDu
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.

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 14:37
von Works4Me
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

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 15:20
von cofi
Du suchst `PyQt4.QtCore.Qt.AlignRight`.

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 15:21
von EyDu
Edit: So geht das aber nicht, einfach eine Minute vorher posten ^^

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 15:24
von cofi
Vielleicht borgt dir Guido ja seine Zeitmaschine ;)

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 15:27
von EyDu
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

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 16:40
von Works4Me
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

Re: Text in textEdit ausrichten (Newbie)

Verfasst: Dienstag 6. November 2012, 17:18
von EyDu
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 ;-)