2. Fenster öffnen
Verfasst: Dienstag 17. Mai 2011, 18:25
Hallo zusammen,
ich weiß, über Fenster gabs schon mehrere Beiträge. Aber die konnten mir nicht weiterhelfen weil die alle den Designer verwendet haben.
Naja auf jedenfall habe ich eine Frage:
Ich habe mir ein Fenster (als Klasse) erstellt. Das Fenster beinhalten 2 Buttons und einen TextEdit.
Hier der Code:
Ich möchte momentan Signal & Slots verstehen. Daher habe ich zur Übung versucht, durch drücken des Button_3 ein neues Fenster zu öffnen.
Das neue Fenster ist wieder dieselbe Klasse.
Über diese Funktion wollte ich mir eine neue Instanz derselben Klasse erzeugen. Diese Instanz heißt dann eben mod_2
Den "connect" Befehl habe ich so angewendet:
Es kommt zwar keine Fehlermeldung, aber funktionieren tuts auch nicht.
Also warum? Wo liegt der Fehler? Ich kenne mich mit Objektorientierung eigneltich kaum aus muss ich zugeben....
Das meine connect-Schreibweise veraltet ist ist mir im übrigen klar. Ich will aber erstmal den gröbsten Fehler ausmerzen und das Programm dazu bringen das zu tun was ich möchte.
Falls mir jemand helfen könnte wäre das toll.
Gruß
Cascoin
ich weiß, über Fenster gabs schon mehrere Beiträge. Aber die konnten mir nicht weiterhelfen weil die alle den Designer verwendet haben.
Naja auf jedenfall habe ich eine Frage:
Ich habe mir ein Fenster (als Klasse) erstellt. Das Fenster beinhalten 2 Buttons und einen TextEdit.
Hier der Code:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import Modul_1, Modul_2
import Klasse
from PyQt4 import QtGui, QtCore
class Modul_1(QtGui.QMainWindow): #QtGui.QWidget
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(200, 300, 400, 300) #Fenstergeometrie
self.setWindowTitle("Modul_1")
self.Andi = Klasse.student # Erzeugung Student-Klasse
self.Andi.name = "Janni"
self.Ausgabe = QtGui.QTextEdit("init", self) #Ausgabe-Fenster
self.Ausgabe.move(70, 90)
self.button1 = QtGui.QPushButton("Button 1", self) # Buttons's
self.button1.move(30, 50)
self.button2 = QtGui.QPushButton("Button 2", self)
self.button2.move(150, 50)
self.button3 = QtGui.QPushButton("Button 3", self)
self.button3.move(270, 50)
self.statusBar().showMessage('Ready') #Statusleiste
# Connections
self.connect(self.button1, QtCore.SIGNAL('clicked()'),self.statusBar(),
QtCore.SLOT(self.statusBar().showMessage("ready")))
self.connect(self.button1, QtCore.SIGNAL('clicked()'), self.buttonClicked)
self.connect(self.button2, QtCore.SIGNAL('clicked()'), self.button2Clicked)
#neue schreibweise vgl
self.connect(self.button1, QtCore.SIGNAL('clicked()'), self.Text1)
self.connect(self.button2, QtCore.SIGNAL('clicked()'), self.Text2)
self.connect(self.button3, QtCore.SIGNAL('clicked()'), self.OpenWin)
#SLOT Funktionen
def OpenWin(self):
mod_2 = Modul_1()
def Text1(self):
self.Ausgabe.setText("Taste 1")
def Text2(self):
self.Ausgabe.setText("Taste 2")
def buttonClicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was pressed')
def button2Clicked(self):
sender = self.sender()
self.statusBar().showMessage(sender.text() + ' was pressed')
def receive_klick(self):
sender = self.sender()
QtCore.SLOT(self.Ausgabe.setText("Output"))
Ich möchte momentan Signal & Slots verstehen. Daher habe ich zur Übung versucht, durch drücken des Button_3 ein neues Fenster zu öffnen.
Das neue Fenster ist wieder dieselbe Klasse.
Über diese Funktion wollte ich mir eine neue Instanz derselben Klasse erzeugen. Diese Instanz heißt dann eben mod_2
Code: Alles auswählen
def OpenWin(self):
mod_2 = Modul_1()
Den "connect" Befehl habe ich so angewendet:
Code: Alles auswählen
self.connect(self.button3, QtCore.SIGNAL('clicked()'), self.OpenWin)
Also warum? Wo liegt der Fehler? Ich kenne mich mit Objektorientierung eigneltich kaum aus muss ich zugeben....
Das meine connect-Schreibweise veraltet ist ist mir im übrigen klar. Ich will aber erstmal den gröbsten Fehler ausmerzen und das Programm dazu bringen das zu tun was ich möchte.
Falls mir jemand helfen könnte wäre das toll.
Gruß
Cascoin