Создать MessageBox в Python для Mac? - PullRequest
0 голосов
/ 24 мая 2018

В настоящее время работаю через бесплатный онлайн-класс для Python от Cybrary (я пишу в 3.6), но я использую Mac, в то время как ведущий использует Windows.До сих пор было очень мало различий, если таковые имеются.

В настоящем разделе, однако, рассматривается изучение и использование Ctypes, а «назначение» говорит: Write a function which takes two arguments, title and body and creates a MessageBox with those arguments.

Код, используемый ввидео в качестве примера создания окна сообщения:

from ctypes import *

windll.user32.MessageBoxA(0, "Click Yes or No\n", "This is a title\n", 4)

Мой код:

# 2.1 Ctypes: Write a function which takes two arguments, title and body
#  and creates a MessageBox with those arguments
def python_message_box(title, body):
    return windll.user32.MessageBoxA(0, body, title, 0)

Запуск этого дает ошибку:

File ".../AdvancedActivities.py", line 9, in python_message_box
   return windll.user32.MessageBoxA(0, body, title, 0)
NameError: name 'windll' is not defined

Не думаю, что мне нужно говорить, что я получаю ту же ошибку, пытаясь запустить

windll.user32.MessageBoxW(0, body, title, 0)

Я не смог найти нигде примеров людей, создающих Ящики сообщений на компьютерах Mac.Это специфичная для Windows функция?Если это так, что будет эквивалентно этому в Mac?

РЕДАКТИРОВАТЬ: решение Марка Сетчелла состоит в том, чтобы Python выполнял терминальные функции, выполняющие задачи windll, поэтому вместо windll.user32.MessageBoxA(0, body, title, 0) используйте:

command = "osascript -e 'Tell application \"System Events\" to
           display dialog \""+body+"\"'"
system(command)

Ответы [ 2 ]

0 голосов
/ 08 августа 2019
import os

body_Str="Body of Dialog"

title_Str="Title"

os.system("""osascript -e \'Tell application \"System Events\" to display dialog \""+body_Str+"\" with title \""+title_Str+"\"\'""")

это намного лучше

0 голосов
/ 24 мая 2018

Если вы введете это в терминал на любом Mac, вы получите диалоговое окно:

osascript -e 'Tell application "System Events" to display dialog "Some Funky Message" with title "Hello Matey"'

enter image description here

См. здесь для дальнейших примеров.

Итак, просто используйте вызов подпроцесса Python для запуска ... документации подпроцесса или используйте system().

Nothingустановить.Нет зависимостей.Вы также можете запросить у пользователя значения, выбрать файлы или каталоги и выбрать цвета, используя ту же технику.Все диалоговые окна являются родными для Mac - не какая-то уродливая имитация.

...