Benutzerdefinierter Eingabedialog (nur GUI)
In Scripten ist es besonders vorzuziehen, einen einzelnen Dialog anzuzeigen, wenn mehrere Eingaben erforderlich sind. Dazu können Sie lux.getInputDialog() verwenden. Die von Luxion bereitgestellten Skripte verwenden dies.
Wenn wir beispielsweise ein Videokodierungsscript schreiben wollten, könnte der folgende Dialog ausreichen:
>>> values = [("folder", lux.DIALOG_FOLDER, "Folder with frames:", None), \
("fmt", lux.DIALOG_TEXT, "Frame file format:", "frame.%d.jpg"), \
("start", lux.DIALOG_INTEGER, "Start frame:", 1, (1, 4096)), \
("end", lux.DIALOG_INTEGER, "End frame:", 10, (1, 4096)), \
("fps", lux.DIALOG_INTEGER, "FPS:", 10, (1, 1024)), \
("name", lux.DIALOG_TEXT, "Video name:", "video.mp4")]
>>> opts = lux.getInputDialog(title = "Encode Video", \ # Shows the dialog.
desc = "Put a description here.", \
values = values)
>>> opts
{'end': 10, 'fps': 10, 'fmt': 'frame.%d.jpg', 'name': 'video.mp4', 'start': 1, 'folder': ''}
Wenn Sie auf “OK” klicken, ohne Werte zu ändern, erhalten Sie das obige Python-Wörterbuch. Jede Taste ist dem Wert aus dem Dialog zugeordnet.
Anmerkung
Das Zeichen „\“ oben kennzeichnet eine Fortsetzung der Zeile, es wird also nicht in mehrere Zeilen aufgeteilt, sondern als eine Zeile verstanden.
Für Scripte, die häufig ausgeführt werden, ist es praktisch, wenn KeyShot die letzten Werte speichert, für wenn das Dialogfeld erneut angezeigt wird, und dies wird durch die Verwendung eines eindeutigen Werts für die Option id erreicht:
>>> opts = lux.getInputDialog(title = "Encode Video", \
desc = "Put a description here.", \
values = values, \
id = "something_unique_goes_here")
Wenn der eindeutige Wert bereits von einem anderen Script verwendet wird, erhalten Sie unerwünschte Ergebnisse. Denken Sie jedoch daran, dass Ihr Script jedes Mal denselben eindeutigen Wert verwenden muss, um Ihre Werte abzurufen.