Python — зависание кнопки tkinterPython

Программы на Python
Ответить
Anonymous
 Python — зависание кнопки tkinter

Сообщение Anonymous »

У меня проблема с зависанием приложения на Python. Я использовал библиотеку tkinter, чтобы создать какое-то приложение. Когда я нажимаю кнопку «Отправить», она вызывает функции, которые длятся 3 минуты, и на эти 3 минуты приложение зависает... Я хочу видеть все журналы этой функции «вживую». Я не могу подождать 3 минуты и получить все журналы.
Ниже приведен пример моего кода:

Код: Выделить всё

import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext
import time

class Frames:

def main_frame(self, win):

# Main Frame
main = ttk.LabelFrame(win, text="")
main.grid(column=0, row=0, sticky="WENS", padx=10, pady=10)
return main

def button_frame(self, win):

# Button Frame
butt_frame = ttk.LabelFrame(win, text="Button")
butt_frame.grid(column=0, row=0, sticky='NWS')

def _send_button():
for i in range(10):
self.write_text_console("{0}\n".format(i))
time.sleep(0.5)

# Send Button
ttk.Label(butt_frame, text="                                         ").grid(column=0, row=8)
button = tk.Button(butt_frame, text="Send", command=_send_button, foreground='black')
button.grid(column=0, row=13, sticky=tk.EW)

def scrolled_text_widget(self, win):
ttk.Label(win, text="                                         ").grid(column=0, row=1)
ttk.Label(win, text="Console Output:").grid(column=0, row=2, sticky=tk.W)
self.scr = scrolledtext.ScrolledText(win, width=100, height=10, wrap=tk.WORD, state="disabled")
self.scr.grid(column=0, row=3, columnspan=5)

def write_text_console(self, string, color="black", tag="console"):
self.scr.configure(state='normal')
self.scr.insert('end', string, tag)
self.scr.tag_config(tag, foreground=color)
self.scr.configure(state='disabled')
self.scr.see("end")

win = tk.Tk()
win.geometry("845x300")
win.resizable(0, 0)
frames = Frames()
main = frames.main_frame(win)
frames.button_frame(main)
frames.scrolled_text_widget(main)
win.mainloop()
Этот пример показывает мою проблему. Когда вы нажимаете кнопку «Отправить», приложение зависает на 5 секунд. Но мне нужно видеть журналы во время цикла.
Как я могу решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/670 ... ton-freeze
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»