Как запустить приложение 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.