Ткинтер не обновляет курсор - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь обновить курсор, когда моя программа занята.

Этот фрагмент работает:

import tkinter as tk
def button():
    root.configure(cursor="watch")
root = tk.Tk()
root.geometry("300x500")
button_1 = tk.Button(master=root,command=button,width=10)
button_1.grid()
root.mainloop()

Когда я нажимаю кнопку, курсор меняется

Но этот фрагмент не работает:

import tkinter as tk
def button():
    root.configure(cursor="watch")
    input("Force a pause")
root = tk.Tk()
root.geometry("300x500")
button_1 = tk.Button(master=root,command=button,width=10)
button_1.grid()
root.mainloop()

Обновляет курсор только в том случае, если я активизирую другое окно (или после ввода фиктивного ввода)

Я пытался добавить

root.configure(cursor="watch")
root.update()

но он все еще не работает (и в любом случае, так как этот человек говорит, что помещать обновление () в обратный вызов - плохая идея)

Любые предложения приветствуются.

Спасибо за ваше время.

1 Ответ

0 голосов
/ 24 июня 2018

Ваш код обновляет курсор, но это делается только после завершения занятого процесса.Таким образом, вы можете выполнить занятый процесс в потоке, чтобы предотвратить зависание пользовательского интерфейса.

import tkinter as tk
import threading

def worker():
    for x in range(0, 100000):
        print(x)
    root.config(cursor="arrow")

def button():
    root.config(cursor="watch")
    threading.Thread(target=worker).start() 

root = tk.Tk()
root.geometry("300x500")
root.config(cursor="arrow")

button_1 = tk.Button(master=root, command=button, width=10)
button_1.grid()

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...