Tkinter: обнаружение запущенного процесса и блокировка всех остальных кнопок во время выполнения одного процесса? - PullRequest
0 голосов
/ 18 июня 2020

Я делаю Tkinter GUI, мое приложение Tkinter имеет несколько функций, которые также строят графики, когда я нажимаю кнопку графика, тогда открывается одно окно matplotlib, но я хочу, чтобы пользователь не закрывал это окно matplotlib, он не разрешено нажимать любую другую кнопку, если он нажимает также, тогда он не должен ничего делать и предлагать пользователю закрыть текущее окно. Не только для matplotlib, если пользователь открыл одно окно, поэтому ему не должно быть разрешено открывать другое окно, пока он не закроет текущее окно, которое он открыл, и должен появиться запрос, чтобы закрыть текущее окно. Есть ли способ в python для то же самое, что мы можем обнаружить, что любое текущее окно открыто или нет?

plt.figure()
plt.plot(x,y)
plt.xlabel('X values')
plt.ylabel('Y axis')
plt.plot()

этот процесс запускается, когда я нажимаю кнопку графика, но я хочу, чтобы это было до тех пор, пока пользователь не откроет это окно matplotlib и не закроется ему не разрешено запускать какой-либо другой процесс, нажав другую кнопку, поэтому моя основная проблема заключается в том, как узнать в tkinter, что этот график matplotlib открыт, потому что только тогда я смогу отключить другое окно?

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

Вы можете отключить главное окно (предположим, что оно называется root), используя root.attributes('-disabled', 1) перед открытием окна графика, и повторно включить главное окно, используя root.attributes('-disabled', 0) после закрытия окна графика.

def open_plot_window():
    plt.figure()
    plt.plot(x,y)
    plt.xlabel('X values')
    plt.ylabel('Y axis')
    # disable the main window
    root.attributes('-disabled', 1) 
    # setup a callback to re-enable the main window if the plot window is closed
    plt.connect('close_event', lambda _: root.attributes('-disabled', 0))
    # show the plot window
    plt.show()
0 голосов
/ 18 июня 2020

после открытия окна matplotlib вы можете отключить все другие кнопки, используя метод disable. вы можете снова включить его, используя методы enable. То же самое относится и к кнопке закрытия окна.

Кнопка - это кнопка tkinter var

root = Tk()
Quit = Button(root, text="Quit", width=12, command=close)
Quit.pack()
Quit["state"] = "disabled"
root.update()
time.sleep(2)
Quit["state"] = "normal"
root.update()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...