Мне нужна программа на Python, которая реализует HTTP API (например, с помощью Flask), на котором она может получать сообщения для отображения различных окон на экране (например, с помощью tkinter).
Каков хороший способ структурирования такой программы? Я считаю, что мне понадобятся два отдельных потока: один для рисования окон tkinter и один для прослушивания HTTP-запросов.
скажем, я хочу отправить запрос http, например, на / show_window, затем окно отображается и сохраняется на экране до тех пор, пока в / hide_window не будет отправлен запрос, а затем окно закрыто.
Я могу просто нарисовать окно через tkinter. Но если я добавлю это в маршрут Flask, он, конечно, застрянет в window.mainloop ().
import tkinter as tk
from flask import Flask
app = Flask(__name__)
@app.route("/show")
def show():
root = tk.Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
root.attributes('-alpha', 0.0) #For icon
root.iconify()
window = tk.Toplevel(root)
window.geometry("%sx%s" % (screen_width, screen_height))
window.configure(background='black', cursor='none')
window.overrideredirect(1)
window.attributes('-topmost', 1)
close = tk.Button(window, text = "Close Window", command = lambda: root.destroy())
close.pack(fill = tk.BOTH, expand = 0)
window.mainloop() # app is stuck here until gui window is closed
return "show!"
@app.route("/hide")
def hide():
### Code to destroy or hide the Window here.
return "hide"
Я думаю, мне нужно что-то вроде двух потоков: один, который запускает Flask + один, который запускает окно, а затем потоку фляги нужно отправлять сообщения в поток окна, чтобы показать, скрыть, создать, уничтожить, окна, и т.п.
Но я не совсем уверен, как это сделать.
Обратите внимание, что ни в коем случае не требуется использовать Flask или tkinter. Это всего лишь инструменты, которые казались хорошими для простой веб-инфраструктуры для API и простого способа создания окон графического интерфейса.