comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Duda con manejo de hilos en python

  • 0 Respuestas
  • 986 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Azav

  • *
  • Underc0der
  • Mensajes: 23
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Noviembre 02, 2014, 04:13:15 pm »
He escuchado que en Python el manejo de hilos es un poco enredado y que tampoco se lleva muy bien con tkinter, el problema que tengo es el siguiente: tengo una clase para la interfaz, y otra clase para un proceso cualquiera (es un proceso que se queda en un while infinito). Inicio primero la clase de la interfaz y luego la clase con el proceso infinito. Luego, mi idea es que cuando se cierre la interfaz, también se termine el proceso infinito y el programa termine. El código simplificado sería así:

Código: Python
  1. import time, threading
  2. from tkinter import *
  3. from tkinter import messagebox
  4.  
  5. finalizar = False
  6.  
  7. class Interfaz(threading.Thread):
  8.         def __init__(self):
  9.                 threading.Thread.__init__(self)
  10.  
  11.         def run(self)
  12.                 global finalizar
  13.                 #Main Window
  14.                 self.mainWindow = Tk()
  15.                 self.mainWindow.geometry("200x200")
  16.                 self.mainWindow.title("My GUI Title")
  17.                 #Label
  18.                 lbCommand = Label(self.mainWindow, text="Hola mundo", font=("Courier New", 16)).place(x=20, y=20)
  19.                 #Start
  20.                 self.mainWindow.mainloop()
  21.                 #Cuando se cierre la GUI seteamos finalizar a True
  22.                 finalizar = True
  23.  
  24. class ClaseDos(threading.Thread):
  25.         def __init__(self):
  26.                 threading.Thread.__init__(self)
  27.        
  28.         def run(self):
  29.                 global finalizar
  30.                 while not finalizar:
  31.                         print("Loop")
  32.                         time.sleep(3)
  33.                                                        
  34. GUI = Interfaz()
  35. GUI.start()
  36. Clase = ClaseDos()
  37. Clase.start()

Cuando hago click en el botón cerrar (en la esquina superior derecha de la GUI) me lanza el siguiente error:

Citar
Tcl_AsyncDelete: async handler deleted by the wrong thread

No logro entender por qué este error, y en Google no encuentro mucha información útil. ¿Alguien sabe a qué se debe?

¡Saludos!
« Última modificación: Noviembre 02, 2014, 05:52:17 pm por blackdrake »

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Duda con " "

Iniciado por Krisium

Respuestas: 1
Vistas: 1641
Último mensaje Junio 10, 2010, 10:50:35 am
por Xa0s
[SOLUCIONADO] [Taller PHP] Duda taller php 1 ejercicio 2

Iniciado por arthusu

Respuestas: 3
Vistas: 1817
Último mensaje Julio 18, 2011, 02:20:03 am
por arthusu
[SOLUCIONADO] [Taller PHP] Duda taller php 1 ejercicio 2

Iniciado por Only

Respuestas: 2
Vistas: 1405
Último mensaje Agosto 01, 2011, 04:28:03 pm
por Only
[SOLUCIONADO] Duda con Windows 7 de 32 bits & 64 bits

Iniciado por andrestoushit

Respuestas: 2
Vistas: 825
Último mensaje Marzo 15, 2016, 04:01:16 pm
por Lah-Vahn
[SOLUCIONADO] [Taller PHP] Duda taller php 2 ejercicio 3

Iniciado por arthusu

Respuestas: 4
Vistas: 2078
Último mensaje Agosto 05, 2011, 02:00:42 am
por arthusu