Frage

Ich schreibe eine einfache OSX App mit Python und PyObjC. Ich entwarf die Einstellungen Dialog Interface Builder verwenden und ich verwende ibtool es zu kompilieren, dann laden Sie es von Python. Das Problem ist, wie die Steuerelemente für den Zugriff auf die ich in diesem Fenster aus dem Python-Code? Ich spielte mit dem iPhone Entwicklung etwas vor und ich erinnere mich, ich brauche eine IBOutlet in der Controller-Klasse haben, die an die UI-Steuerung in dem Interface Builder verbunden werden. Es sollte so etwas wie dies in Python aussehen:

class MyClass(NSObject):
  my_outlet = objc.IBOutlet('my_outlet')

Aber da ich nicht arbeite in XCode (alles, was ich habe, ist eine Py-Datei und eine .xib-Datei), wird Interface Builder nicht über meine Stellen kennen. Wie kann ich in diesem Fall die Bindung? Oder wie kann ich sonst noch Zugriff auf die UI-Elemente aus dem Code?

War es hilfreich?

Lösung

Als erstes hat die Verwendung von Xcode oder nicht nichts mit NIB Laden zu tun (über die es bequemer).

Wie Ole sagte, können Sie IB verwenden, um manuell benötigen Sie den Ausgang des in der Datei des Besitzer oder die benutzerdefinierten Objektinstanzen, die Sie in der NIB-Datei haben. Dadurch wird es alle „arbeiten nur“.

Allerdings ist diese Aussage ist, was meine relativ ähnliche Antwort aufgefordert:

  

alles, was ich habe, ist eine Py-Datei und ein .xib   Datei

Sind Sie versuchen, außerhalb eines .app-Wrapper ein bisschen UI-Code zu schreiben? Wenn ja, das ist ein völlig ungestützt Muster, sehr schwierig, richtig zu bekommen, und sehr wahrscheinlich über Software-Updates oder Major-Releases zu brechen (wie es oft in der Vergangenheit).

Der beste Weg, um Ihr Problem zu lösen, ist ein Xcode-Projekt zu verwenden und eine Standard-Anwendung zu erstellen. Die Vorlagen sind nicht mehr mit den Entwickler-Tools ausgeliefert. laden Sie sie einfach getrennt.

Wenn Sie es von der Kommandozeile ausgeführt werden müssen, können Sie dies tun.

Andere Tipps

Ich habe nicht versucht, aber Sie können auch Filialen direkt in IB definieren. Öffnen Sie das Bedienfeld Bibliothek, wählen Sie Klassen in der segmentierten Steuerelement oben und wählen Sie Ihre eigene Klasse Sie wollen für einen Auslass definieren. Angenommen, Sie haben eine NSWindow Unterklasse namens MyWindow. Wählen Sie die NSWindow Klasse in der Liste, klicken Sie auf die Aktionstaste in der unteren linken, New Subclass wählen ... und nennen Sie es MyWindow. Wechseln Sie nun in den Outlets Registerkarte und erstellen Sie eine NSButton Ventil für Ihre Fenster. Nun verbinden Sie auf eine Schaltfläche in die Steckdose.

Ich weiß nicht, wie dies zu PyObjC übertragen wird, aber ich würde gerne Ihre Ergebnisse sehen, wenn Sie es ausprobieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top