Ich habe noch nicht vor allzu langer Zeit angefangen mit Python und PyQt herumzuspielen. Bin also noch butiger Anfänger.

Ich habe zwei Probleme bei denen ich nicht weiterkomme:
1. Ich möchte in der Statusbar einen Text erscheinen lassen wenn der Benutzer mit der Maus über einen Eintrag in der Toolbar fährt.
2. Ich möchte aus einen zentralen WIdget heraus, welches über eine Klasse definiert wird, ebenfalls den Inhalt der Statusbar manipulieren.
zu 1:
Ich meine in der Doku zu PyQt4 gelesen zu haben über den Slot "showMessage()" den Inhalt der Statusbar setzen zu können. Das funktioniert nur leider nicht. Hier der entsprechende Befehl:
Code: Alles auswählen
self.connect(self.exit, QtCore.SIGNAL("hovered()"), self.statusBar(), QtCore.SLOT("showMessage()"))
"Object::connect: No such slot QStatusBar::showMessage()"
Wo liegt mein Denkfehler?
zu 2:
Das zentrale Widget definiere ich in der Klasse "CentralWidget". Aus dieser Klasse heraus möchte ich nun den Inhalt der Statusbar ändern. Hier als Beispiel wenn der Knopf gedrückt wird.
Ich bekomme es einfach nicht hin auf die Statusbar zuzugreifen. Da die Klasse "CentralWidge" aus der Klasse "MainWindow" heraus aufgerufen wird müste das doch machbar sein. Hier fehlt mir noch das Verständnis...
Ich bin für jeden Hilfe dankbar! Untern der Code auf den ich mich beziehe.
Code: Alles auswählen
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class CentralWidget(QtGui.QWidget):
"""
Zentrales Widget des Hauptfensters erzeugen
"""
def __init__(self):
QtGui.QWidget.__init__(self)
self.centralWidget = QtGui.QWidget()
self.initWidget()
def initWidget(self):
self.directoryButton = QtGui.QPushButton("Open &Directory")
self.connect(self.directoryButton, QtCore.SIGNAL("clicked()"),
self.changeStatusBar)
grid = QtGui.QGridLayout()
grid.addWidget(self.directoryButton, 0, 0)
self.setLayout(grid)
def changeStatusBar(self):
"""
Text der Statusbar des Hauptfensters verändern
"""
self.MainWindow.statusBar().showMessage("Button clicked")
class MainWindow(QtGui.QMainWindow):
"""
Main Window mit Toolbar und Statusbar erzeugen
"""
def __init__(self):
QtGui.QMainWindow.__init__(self)
#self.resize(250, 150)
self.setWindowTitle('Status Bar')
self.statusBar().showMessage("Status Bar")
#Toolbar und Aktionen erzeugen
self.createActions()
self.createToolBar()
self.centralWidget = CentralWidget()
self.setCentralWidget(self.centralWidget)
def createActions(self):
"""
Aktionen
"""
self.exit = QtGui.QAction(QtGui.QIcon("icons/application-exit.png"), "&Quit", self)
self.connect(self.exit, QtCore.SIGNAL("triggered()"), QtCore.SLOT("close()"))
self.connect(self.exit, QtCore.SIGNAL("hovered()"), self.statusBar(), QtCore.SLOT("showMessage()"))
def createToolBar(self):
"""
Toolbar
"""
self.toolbar = self.addToolBar('Quit')
self.toolbar.addAction(self.exit)
app = QtGui.QApplication(sys.argv)
gui = MainWindow()
gui.show()
sys.exit(app.exec_())