Spielen Sie mit der Pythonista-UI-Implementierung [Action-Implementierung]

Einführung

Ich habe mir Sorgen gemacht, die mit Pythonista erstellte Benutzeroberfläche zu verschieben, daher werde ich sie als Artikel schreiben. Wenn Sie hier suchen, ohne die Implementierung der Pythonista-Benutzeroberfläche zu stark zu berühren, sollten Sie zuerst Folgendes lesen! Spielen Sie mit der UI-Implementierung von Pythonista3 [Super Super Introduction] Spielen Sie mit der Pythonista-UI-Implementierung [Bildschirmelemente]

Action In der UI-Implementierung von Pythonista verfügt jedes Element über ein Attribut namens "Aktion", mit dem Sie festlegen können, was beispielsweise beim Drücken einer Taste (Tippen oder Klicken) geschieht. Dies ist der rote Kreis.

Wenn Sie hier den Funktions- oder Methodennamen angeben, der den Prozess definiert, wird dieser beim Drücken der Taste aufgerufen. Der Vorgang ist in der pyui entsprechenden py-Datei beschrieben.

ui_sample.py


import ui
import console

def button_clicked(sender):
	console.alert('Button1 clicked!')

v = ui.load_view()
v.present('sheet')

Wählen Sie Button1 in sample_ui.pyui im obigen Bild und geben Sie in Aktion button_clicked an.

Wenn ich es starte und die Taste drücke. .. .. Deshalb. Lassen Sie uns die Quelle erklären.

import ui
import console

Abgesehen davon kann das Konsolenmodul für die Nachrichtenausgabe verwendet werden, daher ist es gut, sich daran zu erinnern. Es ist ein integriertes Modul von Pythonista.

def button_clicked(sender):
	console.alert('Button1 clicked!')

Dies ist der Vorgang, den Sie aufrufen möchten, wenn Sie die Taste drücken. Stellen Sie sicher, dass Sie das Argument "Absender" für die in Aktion angegebene Funktion oder Methode angeben. (Da für pyui kein Argument angegeben werden kann, kann nur "Absender" angegeben werden.)

Das Objekt, von dem die Aktion angegeben wird, wird an "Absender" übergeben. In diesem Fall ist es ein Knopf.

Koordination der Elemente auf dem Bildschirm

Die im obigen Bild gezeigte Benutzeroberfläche enthält nicht nur Schaltflächen, sondern auch Textfelder. In diesem Fall möchten Sie die im Textfeld des Programms eingegebene Zeichenfolge abrufen, wenn Sie die Taste drücken, oder? Es ist beschlossen zu sein!

Die in der Ansicht platzierten Elemente sind

v = ui.load_view()

Wenn Sie dies tun, wird alles in v geladen. Geben Sie den Namen jedes Elements als Wörterbuchschlüssel an, um Elemente aus dem Rückgabewert von load_view () abzurufen.

s = v['button1'].title
print(s)  #button1 Titel("OK" im gezeigten Beispiel)Wird gedruckt.

Korrekt. Versuch es bitte.

Übrigens können Sie den Wert auch mit der obigen Spezifikationsmethode umgekehrt einstellen.

v = ui.load_view()

v['button1'].title = 'NG'  #Setzen Sie den auf der Schaltfläche mit pyui angezeigten Titel auf "OK".
## Ich habe es eingestellt, aber auf "NG" gesetzt

v.present('sheet')         #Vor dem Zeichnen mit Gegenwart eingestellter Wert

Nun, Sie haben vielleicht ein gutes Kind bemerkt, aber das im Hauptverarbeitungsteil definierte v kann nicht an die Aktionsfunktion von "button1" übergeben werden, die nur "Absender" als Argument verwendet. Sie können das View-Element jedoch wie folgt aus dem Absender ziehen:

def button_clicked(sender):
	v = sender.superview     # superview: sender(button1)Übergeordnetes Element von
	console.alert(v['textfield1'].text)

Da "button1" und "textfield1" in derselben benutzerdefinierten Ansicht platziert sind, können sie mithilfe von "überwachen" und Verfolgen des übergeordneten Elements von "button1" abgerufen werden.

Ansicht klassifizieren

Jetzt konnte ich die Bildschirmelemente anordnen. Aktion kann auch implementiert werden. Lass es uns versuchen! Also habe ich einen Bildschirm erstellt und Action für alle Elemente implementiert ...

import ui

def button1_clicked(sender):
	#Prozess 1

def button2_clicked(sender):
	#Prozess 2

def button3_clicked(sender):
	#Prozess 3

def button4_clicked(sender):
	#Prozess 4

def button5_clicked(sender):
	#Prozess 5

v = ui.load_view()
v.present('sheet')

Wie ist das? Ist es nicht an der Zeit, in Einheiten der Ansicht (Bildschirm) zu klassifizieren?

Nun, ungefähr so

import ui

class CustomView1():
	def button1_clicked(sender):
		#Prozess 1

	def button2_clicked(sender):
		#Prozess 2
	...

v = ui.load_view()
v.present('sheet')

Geben Sie auch den Klassennamen für Action auf der Pyui-Seite an und geben Sie ihn als "CustomView1.button1_clicked" an.

Oh? Obwohl es sich um eine Methode in der Klasse handelt, wird das Argument self nicht angegeben. Dies funktioniert nur, wenn Sie dies angeben. Das Schreiben von "self" enthält nur Objekte, die sich über "sender" erstrecken. Sie können nicht mehr als einen übergeben, z. B. "Selbst" und "Absender".

Da Klassenvariablen nicht verwendet werden können, müssen sie nur eingeschlossen werden.

Es ist jedoch in Ordnung, wie folgt zu schreiben!

import ui

class CustomView1(object):
	def button1_clicked(self, sender):
		#Prozess 1

	def button2_clicked(self, sender):
		#Prozess 2
	...

v = ui.load_view()

cv = CustomView1()
v['button1'].action = cv.button1_clicked

v.present('sheet')

Geben Sie die Methode direkt für "Aktion" an, indem Sie auf das Bildschirmelement aus der zuvor eingeführten Quelle zugreifen. Verwenden Sie pyui nicht, um "Aktion" anzugeben.

abschließend

Ich habe keine detaillierte Verarbeitung angesprochen, aber es ist fast geschafft! Als nächstes werde ich über Bildschirmübergänge schreiben! !!

Recommended Posts

Spielen Sie mit der Pythonista-UI-Implementierung [Action-Implementierung]
Spielen Sie mit der Implementierung der Pythonista-Benutzeroberfläche [Bildschirmelemente]
Spielen Sie mit dem UI-Modul von pythonista3
Spiele mit PyTorch
Spielen Sie mit 2016-Python
Spielen Sie mit CentOS 8
Spiel mit der Pyramide
Spiel mit Fathom
Spiel mit Othello (Reversi)
Spielen wir mit Amedas Daten - Teil 1
Spielen Sie mit Push-Benachrichtigungen mit imap4lib
Spielen Sie mit Linux-Partitionen herum
Spielen wir mit Amedas Daten - Teil 4
Spielen Sie mit Jupyter Notebook (IPython Notebook)
[Python] Spielen Sie mit Discords Webhook.
Bidirektionale Dateiübertragung in Pythonista 3
Spielen wir mit Amedas Daten - Teil 3
Spielen wir mit Amedas Daten - Teil 2
Spielen Sie mit dem MD-Modul von ASE
Spielen Sie mit A3RT (Textvorschlag)