Мой код отображает промежуточные результаты в окно, но если пользователь свернет окно то виджеты не сохранятся и вылетит ошибка.
Вот мой код:
Я пробовал ловить событие когда курсор вне окна или в окне, такой способ вроде работает но если событие поймать когда идет процесс то вылетит ошибка runtimeerror. В общем мне нужно чтобы пользователь мог свернуть окно в любой момент и когда он откроет окно все виджеты были в окне, в независимости от того развернуто окно после цикла или по середине цикла и главное чтобы функция i+=1 так же работала в независимости от положения окна. Так же если выделить или копировать текст по середине цикла, то так же вылетит ошика runtimeerror.
Вот мой код:
Python:
import pytesseract
import numpy
import time
import pyscreenshot as ImageGrab
import cv2
import imutils
# -*- coding: utf-8 -*-
import string
import threading
import sys
import os
import clipboard
from more_itertools import unique_everseen
import time
from PIL import *
from tkinter import *
from tkinter import scrolledtext
start_time = time.time()
files= ["1", "2", "3", "4", "5"]
i = 0
a_flag = 0
afg = True
a_flag_text1 = 1
thread1 = None #поток
list_vidget = [] #список с виджетами изображениями
img_list = [] #список с изображениями
def func(thread_number=[0]):
global root1, thr, pole_can, img, filesi, img_2, i, p, filesi, i2, i5, a_flag, text_vidget, img_1, a_flag_text, text_vidget1, width_umnosh, height_umnosh, b, root1, text, img_list, img_list_vidget, flag, configure_window, flagw, flag_vidget2
local_thread_number = thread_number[0]
thread_number[0] += 1
#создание окна
root1 = Toplevel(root)#проверка закрытия окна
root1.state('zoomed')
text_vidget1 = scrolledtext.ScrolledText(root1, width = 200, height = 100, state=DISABLED )
for i, item in enumerate(files):
i += 1
time.sleep(5)
text_vidget1.pack()
text_vidget = scrolledtext.ScrolledText(root1, width = 120, height = 20)
text_vidget1.window_create(INSERT, window=text_vidget)
text_vidget.insert(1.0,i)
text_vidget.bind('<Control-a>', videlit)
text_vidget.bind('<Control-c>', copy)
text_vidget.bind('<Control-v>', vstavit)
def my_thread():
# вызов потока
global thread1
thread1 = threading.Thread(target = func, name = "Thread-1")
thread1.start()
def vstavit(event):#вставить текст
global rf, files, files_del
rf = clipboard.paste()
files.append(rf)
files_del.append(rf)
def copy(event): #скопировать текст
clipboard.copy(vibor_file_ent_get)
def videlit(event):#выделить текст
vibor_file_ent.select_range(0, 'end')
vibor_file_ent.icursor('end')
root = Tk()
btn = Button(root, text = "click me", command = my_thread).pack()
root.mainloop()
Последнее редактирование: