suchen
HeimBackend-EntwicklungPython-TutorialSchneller Tipp: MacOS mit Python steuern

Quick Tip: Controlling macOS with Python

Kernpunkte

  • Verwenden von Pyobjc (Python bis Objective-C Bridge) kann Python fast alle Aspekte von macOS steuern, einschließlich des Zugriffs auf die API des Betriebssystems, die Steuerung der laufenden Anwendungen und Betriebsfenster.
  • Das Appkit -Modul, auf das über Pyobjc zugegriffen wird, ist ein leistungsstarkes Tool zur Steuerung von MacOS. Es ermöglicht Python, alle laufenden Anwendungen aufzulisten, bestimmte Anwendungen zu aktivieren und die Eigenschaften jeder Anwendung zu durchsuchen.
  • Die Interaktion mit macOS unter Verwendung von Python kann eine gewisse Erforschung und Verständnis der Zielnamenkonvention erfordern. Unter Verwendung von Pythons dir() -Funktionen und PyobJC-Dokumentation können Sie jedoch die MacOS-API steuern und alle Aufgaben ausführen, die mit Objective-C erfolgen können.

Dieser Artikel wird aus "praktischem Python" ausgewählt, und Stuart diskutiert die Methode, Python zur Steuerung des Windows -Betriebssystems zu verwenden.

Wenn wir auf einem Mac arbeiten, können wir Pyobjc (eine Brücke von Python zu Objective-C) verwenden, um fast alle Aspekte des Systems zu steuern. Apple macht die meisten Betriebssysteme über das AppKit -Modul steuerbar, während Pyobjc alle diese Funktionen für Python zugänglich macht. Dies wäre sehr nützlich, wenn wir bereits wüssten, wie man die Methode von AppKit verwendet, um das zu tun, was wir tun wollen, aber durch die Operationssystem -API mit nur ein wenig Erkundung iterieren.

Versuchen wir ein Beispiel. Zunächst brauchen wir Pyobjc, das mit pip install pyobjc installiert werden kann. Dadurch wird die gesamte Betriebssystem -API -Brückenliste installiert, die den Zugriff auf verschiedene Aspekte von macOS ermöglicht. Im Moment werden wir Appkit in Betracht ziehen, ein Tool zum Erstellen und Steuern von laufenden Anwendungen auf Ihrem Mac -Desktop.

Wir können Appkit verwenden, um alle derzeit ausgeführten Anwendungen aufzulisten:

>>> from AppKit import NSWorkspace
>>> NSWorkspace.sharedWorkspace().runningApplications()
(
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
)
>>>

Dies enthält eine lange Liste von NSRunningApplication -Objekten. Jedes Objekt entspricht einer bestimmten Anwendung, die derzeit auf dem Desktop ausgeführt wird. Viele sind "unsichtbare" Anwendungen (die ausgeführt werden, aber nicht unbedingt Windows anzeigen). Andere sind jedoch Anwendungen, die wir als tatsächliche Anwendungen betrachten können - wie Safari, Terminal usw. NsrunningApplication hat Dokumentation über Entwickler.Apple.com, wo seine Eigenschaften angezeigt werden können. Zum Beispiel hat jede Anwendung eine localizedName und ein bundleIdentifier:

>>> for nsapp in NSWorkspace.sharedWorkspace().runningApplications():
...   print(f"{nsapp.localizedName()} -> {nsapp.bundleIdentifier()}")
...
loginwindow -> com.apple.loginwindow
BackgroundTaskManagementAgent -> com.apple.backgroundtaskmanagement.agent
WindowManager -> com.apple.WindowManager
CoreLocationAgent -> com.apple.CoreLocationAgent
Terminal -> com.apple.Terminal
Safari -> com.apple.Safari
Spotlight -> com.apple.Spotlight
Finder -> com.apple.finder

Wir können auch sehen, dass das NSRunningApplication -Objekt über eine activate -Funktion verfügt, die wir aufrufen können, um die Anwendung zu aktivieren, genau wie wir auf das Symbol im Dock klicken würden. Um Safari zu finden und sie dann zu aktivieren, werden wir die activate -Funktion verwenden. Der Anruf nach activate erfordert den Wert von options, wie in der Dokumentation angegeben, für die auch der Importieren von Appkit:

erforderlich ist
>>> from AppKit import NSWorkspace, NSApplicationActivateIgnoringOtherApps
>>> safari_list = [x for x in NSWorkspace.sharedWorkspace().runningApplications()
...     if x.bundleIdentifier() == 'com.apple.Safari']
>>> safari = safari_list[0]
>>> safari.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)

Safari ist jetzt aktiviert.

Finden Sie die Python -Version von macOS api

Python-Namen finden, die den Ziel-C-Namen entsprechen, kann etwas schwierig sein. Wie im obigen Code gezeigt, wird die Funktion des Objective-C activate in Python activateWithOptions_ bezeichnet. Es gibt eine Reihe von Regeln für diesen Namensumwandlungen, die die Pyobjc -Dokumentation erklärt, aber manchmal ist es schneller, Pythons eigene dir() -Funktion zu verwenden, um alle Eigenschaften eines Objekts anzuzeigen und dann die Eigenschaften auszuwählen, die am vernünftigsten aussehen:

>>> from AppKit import NSWorkspace
>>> NSWorkspace.sharedWorkspace().runningApplications()
(
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
    "<nsrunningapplication: lsasn:="">",
)
>>>

Oh! Unsere Safari (nsrunningApplication -Instanz) hat 452 Eigenschaften! Nun, der, den wir wollen, könnte so etwas wie "aktivieren" genannt werden, also:

>>> for nsapp in NSWorkspace.sharedWorkspace().runningApplications():
...   print(f"{nsapp.localizedName()} -> {nsapp.bundleIdentifier()}")
...
loginwindow -> com.apple.loginwindow
BackgroundTaskManagementAgent -> com.apple.backgroundtaskmanagement.agent
WindowManager -> com.apple.WindowManager
CoreLocationAgent -> com.apple.CoreLocationAgent
Terminal -> com.apple.Terminal
Safari -> com.apple.Safari
Spotlight -> com.apple.Spotlight
Finder -> com.apple.finder

ahhh! activateWithOptions_ ist also der Name der Funktion, die wir aufrufen müssen. In ähnlicher Weise ist der Name der Option, die wir an die Funktion übergeben möchten, in Appkit selbst:

>>> from AppKit import NSWorkspace, NSApplicationActivateIgnoringOtherApps
>>> safari_list = [x for x in NSWorkspace.sharedWorkspace().runningApplications()
...     if x.bundleIdentifier() == 'com.apple.Safari']
>>> safari = safari_list[0]
>>> safari.activateWithOptions_(NSApplicationActivateIgnoringOtherApps)

Dieser Prozess kann sich manchmal ein wenig erforschend anfühlen, aber er kann auch von Python durchgeführt werden, dass Objective-C alles kann.

Dieser Artikel ist aus praktischem Python ausgewählt und kann bei SitePoint Premium- und E-Book-Einzelhändlern gekauft werden.

FAQs über die Verwendung von Python zur Steuerung macOS

Was ist Appkit und wie kann man es in Python verwenden, um MacOS zu steuern?

Appkit ist ein Framework im MacOS-SDK, das alle Objekte enthält, die zur Implementierung einer grafischen, ereignisgesteuerten Benutzeroberfläche in MacOS-Anwendungen erforderlich sind. Es bietet eine breite Palette von Klassen und Funktionen zum Erstellen und Verwalten von Anwendungsfenstern, zur Verarbeitung von Benutzereingaben, zum Zeichnen von Grafiken und zum Ausführen anderer Aufgaben, die sich auf die Benutzeroberfläche beziehen. In Python können Sie Pyobjc Bridge verwenden, um auf Appkit und andere objektive C-Frameworks zuzugreifen. Auf diese Weise können Sie Python -Skripte schreiben, mit denen MacOS -Anwendungen, Betriebsfenster und Interaktionen mit Systemdiensten steuern können.

Wie installiere ich das Pyobjc -Modul in Python?

pyobjc ist ein Python-to-Objective-C-Brücke, mit dem Sie voll ausgestattete MacOS-Anwendungen in Python schreiben können. Sie können das Python Package Installer Pip verwenden, um es zu installieren. Öffnen Sie ein Terminalfenster und geben Sie den folgenden Befehl ein: pip install pyobjc. Dadurch wird das PyobJC -Modul und seine Abhängigkeiten heruntergeladen und installiert. Nach Abschluss der Installation können Sie das Modul in einem Python -Skript mit import objc importieren.

Ich erhalte den Fehler "kein Modul mit dem Namen Appkit". was mache ich?

Dieser Fehler bedeutet normalerweise, dass das AppKit -Modul nicht in Ihrer Python -Umgebung installiert oder nicht gefunden wird. Stellen Sie zunächst sicher, dass das PyobJC -Modul installiert ist (einschließlich AppKit). Wenn Sie Pyobjc installiert haben, aber diesen Fehler erhalten, verwenden Sie möglicherweise eine andere Python -Umgebung, in der Pyobjc nicht installiert ist. In diesem Fall müssen Sie Pyobjc in der richtigen Python -Umgebung installieren oder zu einer Python -Umgebung wechseln, wobei Pyobjc installiert ist.

Wie kann man MacOS -Anwendungen mithilfe von Python kontrollieren?

Verwenden von Pyobjc Bridge können Sie MacOS -Anwendungen mithilfe von Python steuern, indem Sie AppleScript -Befehle oder mit Skriptbrücken senden. Sie können beispielsweise eine Anwendung starten, ein Fenster bedienen, Tastenanschläge senden und andere Aufgaben ausführen. Dies erfordert ein gutes Verständnis von Python und AppleScript sowie der Skriptoberflächen der Anwendung.

Wie kann man Python verwenden, um Fenster in MacOS zu manipulieren?

AppKit Framework bietet einige Klassen für die Umstellung von Fenstern wie NSWindow und NSApplication. Sie können diese Klassen verwenden, um eine Liste aller geöffneten Fenster zu erhalten, das Fenster nach vorne zu setzen, die Größe zu ändern oder das Fenster zu verschieben und andere Fensteraufgaben auszuführen. Dies erfordert den Zugriff auf die Appkit -Klasse von Python mit der Pyobjc Bridge.

Kann ich mit Python mit Systemdiensten in MacOS interagieren?

Ja, Sie können Python und Pyobjc Bridge verwenden, um mit verschiedenen Systemdiensten in MacOS zu interagieren. Sie können beispielsweise die NSWorkspace -Klassesklasse verwenden, um eine URL zu öffnen, eine Anwendung zu starten und andere Aufgaben im Zusammenhang mit dem Arbeitsbereich des Benutzers auszuführen. Sie können auch die NSNotificationCenter -Klasse verwenden, um Benachrichtigungen zu veröffentlichen und zu beobachten, mit denen Ihr Skript auf Systemereignisse reagieren kann.

Wie sende ich Tastenanschläge aus Python -Skripten in MacOS?

Sie können die NSEvent -Klasses von AppKit Framework verwenden, um Tastaturereignisse zu erstellen und zu veröffentlichen, mit denen Sie Tastenanschläge aus Python -Skripten senden können. Dies erfordert ein gutes Verständnis der Ereignientypen NSEvent sowie des Tastaturereignisses sowie des Tastencodes der Taste, die Sie drücken möchten.

Kann ich mit Python Grafiken in macOS zeichnen?

Ja, das Appkit -Framework bietet einige Klassen zum Zeichnen von Grafiken wie NSGraphicsContext, NSBezierPath und NSColor. Sie können diese Klassen verwenden, um Linien, Formen und Bilder zu zeichnen, Zeichnungsfarben zu setzen und andere Zeichenaufgaben auszuführen. Dies erfordert den Zugriff auf die Appkit -Klasse von Python mit der Pyobjc Bridge.

Wie verarbeitet man Benutzereingaben in Python -Skripten in macOS?

Das

AppKit -Framework enthält einige Klassen für die Verarbeitung von Benutzereingaben wie NSEvent und NSResponder. Sie können diese Klassen verwenden, um Mausereignisse, Tastaturereignisse und andere Arten von Benutzereingaben zu erhalten. Dies erfordert den Zugriff auf die Appkit -Klasse von Python mit der Pyobjc Bridge.

Kann ich eine vollwertige MacOS-Anwendung in Python schreiben?

Ja, mit Pyobjc Bridging können Sie voll ausgestattete MacOS-Anwendungen in Python schreiben. Dazu gehört das Erstellen einer grafischen Benutzeroberfläche mithilfe von Windows, Schaltflächen und anderen Steuerelementen, der Verarbeitung von Benutzereingaben, Zeichnen von Grafiken und der Interaktion mit Systemdiensten. Dies erfordert jedoch ein gutes Verständnis des Python- und MacOS-SDK sowie des Appkit-Frameworks und anderen objektiven C-Frameworks.

Das obige ist der detaillierte Inhalt vonSchneller Tipp: MacOS mit Python steuern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Python: Ein tiefes Eintauchen in Zusammenstellung und InterpretationPython: Ein tiefes Eintauchen in Zusammenstellung und InterpretationMay 12, 2025 am 12:14 AM

PythonusesahybridmodelofCompilation und Interpretation: 1) thepythonInterPreterCompilessourceCodeIntoplatform-unintenpendentBytecode.2) Thepythonvirtualmachine (PVM) ThenexexexexecthisByTeCode, BalancingeAnsewusewithperformance.

Ist Python eine interpretierte oder eine kompilierte Sprache, und warum ist es wichtig?Ist Python eine interpretierte oder eine kompilierte Sprache, und warum ist es wichtig?May 12, 2025 am 12:09 AM

Pythonisbothinterpreted und kompiliert.1) ItscompiledToByteCodeForPortabilityAcrossplatform.2) thytecodeTheninterpreted, und das ErlaubnisfordyNamictyPingandRapidDevelopment zulässt, obwohl es sich

Für Schleife vs während der Schleife in Python: Schlüsselunterschiede erklärtFür Schleife vs während der Schleife in Python: Schlüsselunterschiede erklärtMay 12, 2025 am 12:08 AM

ForloopsaridealWenyouKnowtHenumberofofiterationssinadvance, während whileloopsarebetterForsituationswhereyouneedtoloopuntilaconditionismet.forloopsaremoreffictionAndable, geeigneter Verfaserungsverlust, whereaswiloopsofofermorcontrolanduseusefulfulf

Für und während Schleifen: ein praktischer LeitfadenFür und während Schleifen: ein praktischer LeitfadenMay 12, 2025 am 12:07 AM

Forloopsareusedwhenthenumberofiterationsisknowninadvance,whilewhileloopsareusedwhentheiterationsdependonacondition.1)Forloopsareidealforiteratingoversequenceslikelistsorarrays.2)Whileloopsaresuitableforscenarioswheretheloopcontinuesuntilaspecificcond

Python: Ist es wirklich interpretiert? Die Mythen entlarvenPython: Ist es wirklich interpretiert? Die Mythen entlarvenMay 12, 2025 am 12:05 AM

Pythonisnotpurelyinterpretiert; itusesahybridapproachofByteCodecompilation undruntimeinterpretation.1) PythoncompilessourcecodeIntoBytecode, die ISthenexecutBythepythonvirtualmachine (Pvm)

Python -Verkettungslisten mit demselben ElementPython -Verkettungslisten mit demselben ElementMay 11, 2025 am 12:08 AM

ToconcatenatelistsinpythonWithThesameElements, Verwendung: 1) Die Operatortokeepduplikate, 2) asettoremoveduplicate, or3) listenConpRectionforControloverDuplikate, EvermethodhasDifferentPerformanceInDormplocate.

Interpretiert gegen kompilierte Sprachen: Pythons PlatzInterpretiert gegen kompilierte Sprachen: Pythons PlatzMay 11, 2025 am 12:07 AM

PythonisaninterpretedLuage, OfferingaseofuseandflexibilitätsbutfacingPerformancelimitationsincriticalApplications.1) InterpretedLanguages ​​LikePythonexecutine-by-Line, ermöglicht, dassmediateFeedbackandrapidPrototyping.2) CompiledLanguagesslikec/C.5.

Für und während der Schleifen: Wann benutzt du jeweils in Python?Für und während der Schleifen: Wann benutzt du jeweils in Python?May 11, 2025 am 12:05 AM

Useforloopswhenthenumberofofiterationssisknowninadvance und wileloopswhenCiterationsDependonacondition.1) Forloopsardealforsequencelistorranges.2) Während

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool