Zum einen wird der Code nur dann automatisch generiert, wenn man eine IDE nutzt, die das durchführt. Viele hier – mich eingeschlossen – nutzen keine IDE. Ich persönlich programmiere im Texteditor und rufe den Designer manuell auf. Dann müsste ich auch die Code-Generierung manuell durchführen.
Du scheinst den Verzicht auf pyuic gleichzusetzen mit dem Verzicht auf den Designer. Das ist nicht der Fall, man kann den Designer auch ohne pyuic nutzen. Dafür gibt es das Modul "PyQt4.uic", welches Funktionen bereitstellt, um das UI-Objekt direkt aus der vom Desginer erzeugten UI-Datei zu laden.
PyQt - Ereignisprogrammierung mit QEvent
Ja es klappt zwar mit dem Tastenkuerzel Ctrl+K aber clicke ich mit der Maus auf den Button ist Sense.
Der Unterschied zwischen Deinem Programm und meinem ist: Du startest ein Application-Window und setzt dort die Toolbar rein. Mein Dialog ist ein Dialog, der aus einem Applications-Window gestartet wird. Im Dialog funktioniert das aber nicht mehr so.
Sch....
OK, also muss ich doch nach dem Focus suchen.
Denn wenn ich mit der Maus oder der Tab-Taste den Cursor in das Textfenster setze, dann muss doch eigendlich ein getFocus-Ereignis ausgeloest werden.
Ebenso, wenn ich per Tab oder Maustaste den Focus auf ein Anderes Steuerelemnt setze muesste es doch ein lostFocus-Ereignis geben.
Die Classendokumentation weist ja darauf hin, dass es diese Ereignisse gibt, nur weiss ich nicht wie ich dieses Ereignis programmiere.
Hmmm.
Nimmt wohl kein Ende.
Wolf
Der Unterschied zwischen Deinem Programm und meinem ist: Du startest ein Application-Window und setzt dort die Toolbar rein. Mein Dialog ist ein Dialog, der aus einem Applications-Window gestartet wird. Im Dialog funktioniert das aber nicht mehr so.
Sch....
OK, also muss ich doch nach dem Focus suchen.
Denn wenn ich mit der Maus oder der Tab-Taste den Cursor in das Textfenster setze, dann muss doch eigendlich ein getFocus-Ereignis ausgeloest werden.
Ebenso, wenn ich per Tab oder Maustaste den Focus auf ein Anderes Steuerelemnt setze muesste es doch ein lostFocus-Ereignis geben.
Die Classendokumentation weist ja darauf hin, dass es diese Ereignisse gibt, nur weiss ich nicht wie ich dieses Ereignis programmiere.
Hmmm.
Nimmt wohl kein Ende.
Wolf
Zum zweiten Mal: Änderungen des Fokus kannst du über das Signal "QApplication.focusChanged" abfangen, focusLost und dergleichen braucht man nur, wenn man eigene Widgets implementiert.
Den Unterschied zwischen deinem und meinem Code habe ich nicht verstanden, und ohne Code kann ich da auch wenig zu sagen. Poste Quellcode, der dein Problem zeigt, dann kann ich dir helfen, ansonsten kann ich allenfalls im Dunkeln stochern. Müsste ich das tun, würde ich sagen, dass der Button den Focus stiehlt. Die Lösung für dieses Problem aber habe ich bereits im zweiten Beispiel gezeigt ...
Den Unterschied zwischen deinem und meinem Code habe ich nicht verstanden, und ohne Code kann ich da auch wenig zu sagen. Poste Quellcode, der dein Problem zeigt, dann kann ich dir helfen, ansonsten kann ich allenfalls im Dunkeln stochern. Müsste ich das tun, würde ich sagen, dass der Button den Focus stiehlt. Die Lösung für dieses Problem aber habe ich bereits im zweiten Beispiel gezeigt ...
Also dem Protokoll wegen lasse ich meinen obigen Beitrag stehen.
Habe auch eine Klickie-Loesung gefunden.
Ich setze im Qt-Designer die Focus-Policy auf "No-Focus" und schon klappt es.
Leider kann ich dann den Button nicht mehr mit der Tab-Taste anspringen, aber Herrgott - man kann doch nicht alles haben im Leben.
Aber das mit meinen angesprochenen gotFocus und lostFocus-Ereignissen, dass wuerde mich schon interessieren wie es funktioniert, da ich diese Ereignisse aus VB und dem OOffice kenne und ich da starke Verwendung haette.
Koennte da mal ...???
Dank Euch
Wolf
Habe auch eine Klickie-Loesung gefunden.
Ich setze im Qt-Designer die Focus-Policy auf "No-Focus" und schon klappt es.
Leider kann ich dann den Button nicht mehr mit der Tab-Taste anspringen, aber Herrgott - man kann doch nicht alles haben im Leben.
Aber das mit meinen angesprochenen gotFocus und lostFocus-Ereignissen, dass wuerde mich schon interessieren wie es funktioniert, da ich diese Ereignisse aus VB und dem OOffice kenne und ich da starke Verwendung haette.
Koennte da mal ...???
Dank Euch
Wolf
Hey Lunar,
Du bist schneller als die Polizei erlaubt. Es muss doch tiefe Nacht bei Dir sein. Bei mir in USA ist es jetzt 20:00 !!!!
Das ist echt mein Problem.
QApplication.focusChanged wo steht das in der Klassendefinition und wie sieht so eine Zeile aus?. Kannst Du mir eine Beispielzeile geben?
Du wuerdest Haare verlieren - in Sekunden um Jahre altern - die Welt verfluchen in der Du geboren wurdest....
Da Du mir so tapfer hilfst, tue ich Dir das nicht an.
Siehe oben.
Wolf
Du bist schneller als die Polizei erlaubt. Es muss doch tiefe Nacht bei Dir sein. Bei mir in USA ist es jetzt 20:00 !!!!
Wo und wie baue ich denn diese Ereignisroutine ein?lunar hat geschrieben:Zum zweiten Mal: Änderungen des Fokus kannst du über das Signal "QApplication.focusChanged" abfangen, focusLost und dergleichen braucht man nur, wenn man eigene Widgets implementiert.
Das ist echt mein Problem.
QApplication.focusChanged wo steht das in der Klassendefinition und wie sieht so eine Zeile aus?. Kannst Du mir eine Beispielzeile geben?
NEIN!!!!!! Den Code willst Du nicht sehen!!!!!Poste Quellcode, der dein Problem zeigt, dann kann ich dir helfen, ansonsten kann ich allenfalls im Dunkeln stochern.
Du wuerdest Haare verlieren - in Sekunden um Jahre altern - die Welt verfluchen in der Du geboren wurdest....
Da Du mir so tapfer hilfst, tue ich Dir das nicht an.
Ja, tat er und zur Strafe bekommt er keinen Focus mehr .Müsste ich das tun, würde ich sagen, dass der Button den Focus stiehlt.
Siehe oben.
Wolf
http://paste.pocoo.org/show/107871/ <- so sieht das aus, wenn du das zuletzt fokussierte Widget speicherst.xWolf hat geschrieben:Wo und wie baue ich denn diese Ereignisroutine ein?
Das ist echt mein Problem.
QApplication.focusChanged wo steht das in der Klassendefinition und wie sieht so eine Zeile aus?. Kannst Du mir eine Beispielzeile geben?
Ich persönlich würde aber einfach zwei Aktionen in das Kontextmenü der Widgets einfügen. Das halte ich für besseres UI-Design
Das wird wohl meine naechste Versuchsaktion sein. Ein Eintrag im Kontextmenue finde ich auch sehr elegant.lunar hat geschrieben:Ich persönlich würde aber einfach zwei Aktionen in das Kontextmenü der Widgets einfügen. Das halte ich für besseres UI-Design
Allerdings muss ich sagen, das Tastenkuerzel (in meinem Falle Ctrl+k) ist beim Schreiben natuerlich ein echter Geschwindigkeitsvorteil.
Nochmals vielen Dank fuer Deine Geduld.
Wolf
Da sind ein paar Flüchtigskeitsfehler drin (Zeile 1+7). Hier ein (ich hoffe doch sehr) lauffähiges Beispiel:lunar hat geschrieben:Code: Alles auswählen
from PyQt4 import ui from PyQt4.QtGui import QMainWindow class MyMainWindow(QMainWindow): def __init__(self, parent=None): super(MyMainWindow, self).__init__(parent) self.ui = loadUi('/path/to/my/file.ui')
Code: Alles auswählen
#!/usr/bin/env python
import sys
from PyQt4 import QtGui, uic
class MyMainWindow(QtGui.QMainWindow):
def __init__(self, ui_file='/path/to/my/file.ui', parent=None):
super(MyMainWindow, self).__init__(parent)
self.ui = uic.loadUi(ui_file, self)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MyMainWindow()
window.show()
app.exec_()