Как запустить приложение Tkinter с сайта django

Я создал сайт на Django и хочу запустить программу tkinter, если пользователь нажмет на кнопку. Может ли кто-нибудь подсказать мне, как это сделать?

Любая помощь будет принята с благодарностью.

Как правило, веб-сайты не могут заставить другие программы на компьютере пользователя запуститься, просто нажав кнопку на веб-странице. Лучшим вариантом является специализированная ссылка, которая, как понимает клиент, связана с другим установленным приложением. См: Как я могу запустить свое приложение windows, когда пользователь открывает url?

Если вы случайно запустили django server на той же локальной системе И он запущен на переднем плане тем же самым зарегистрированным пользователем, вы можете также вызвать программу GUI таким образом, например, используя subprocess или os.system. Хотя, это был бы довольно странный способ сделать это.

def my_view():  # Technically works, but in very limited practical use cases.
    subprocess.Popen(['python', 'my-tk-app.py'])

Поскольку tkinter также не любит запускаться в любом другом потоке, кроме основного, и другие проблемы, связанные с циклами событий, не совсем практично вызывать приложение tkinter непосредственно из представления Django, которое обычно выполняется в отдельном потоке и не должно блокироваться.

Например, это не работает:

def my_view():
    root.mainloop() # start the TK app
    # fails because tk only wants to start in the main thread
    # even if TK _could_ start, the view would eventually timeout

Если вам нужно, чтобы локальное приложение tkinter также взаимодействовало с сервером django, вам почти всегда будет лучше сделать ваше приложение GUI клиентом сервера - то есть, ваше приложение tkinter должно использовать HTTP(S) или аналогичный механизм для связи с Django.

Вернуться на верх