Unvollständiges QLabel

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Hallo,
ich schreibe gerade ein Programm, womit man die Zeit wie lange der Rechner schon an ist ermittelt.
Es sieht so aus:

Code: Alles auswählen

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

# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.

"""
    uptime.py
    ~~~~~~~~~

    Gibt aus wie lange der Rechner schon an ist
"""

import sys
import re

from PyQt4 import QtGui


class Fenster(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.resize(300, 200)
        self.setWindowTitle("Uptime mit Qt")

        self.label = QtGui.QLabel(format("Der Rechner ist seit {0} Sekunden an.", uptime()), self)
        self.label.move(10, 10)


def uptime():
    uptime_datei = open("/proc/uptime", "r")
    uptime_inhalt = re.sub(" .*", "", uptime_datei.read()).replace("\n", "")
    uptime_datei.close()

    return uptime_inhalt


anwendung = QtGui.QApplication(sys.argv)
fenster = Fenster()
fenster.show()
sys.exit(anwendung.exec_())
Das Problem:
Das Fenster öffnet sich, und der Text der darin steht ist der:
Der Rechner ist
Weiß jemand woran es liegen könnte? Ich verstehe das irgendwie nicht.

Viele Grüße,
Jakob.
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

ich würde eher ein label erzeugen und dies als 'CentralWidget' definieren.

Code: Alles auswählen

label = QtGui.QLabel("Der Rechner ist seit %s Sekunden an." % uptime())
self.setCentralWidget(label)
Man könnte auch zuerst ein Layout erzeugen und das Label auf dieses Layout setzen und dann das Layout als 'CentralWidget' definieren (für grössere Sachen besser geeignet).
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Vielen vielen Dank DaMutz! :D
Jetzt funktioniert es. Ich frage mich wieso?
lunar

Ohne Layout-Verwaltung hat Qt keine Möglichkeit, die Größe der Steuerelemente automatisch zu verwalten. Wenn die Oberfläche dann zusammenpasst, ist das eben Zufall. Und bei Dir ist der Zufall nun mal nicht eingetreten ...

Merke Dir also: Baue keine graphische Oberfläche ohne Layout-Verwaltung.
Antworten