Mes importations de programme de base, il est l'interface graphique d'un script GUI.pyComment rediriger stdout à un Tkinter widget texte
old_stdout = sys.stdout
root = Tk.Tk()
root.title('Coursera-dl')
root.geometry("345x230")
app = GUI.Interface(root)
app.mainloop()
if app.button_press() == True and app.return_data():
data = app.return_data()
main(data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8])
sys.stdout = old_stdout
Dans mon GUI.py:
class Interface(ttk.Frame):
def __init__(self,parent=None):
ttk.Frame.__init__(self,parent)
self.parent = parent
self.New_Window()
def New_Window(self):
self.newWindow = Tk.Toplevel(self.parent)
self.app = CoreGUI(self.newWindow)
class StdoutRedirector(object):
def __init__(self,text_widget):
self.text_space = text_widget
def write(self,string):
self.text_space.insert('end', string)
self.text_space.see('end')
class CoreGUI(object):
def __init__(self,parent):
self.parent = parent
self.InitUI()
def InitUI(self):
self.text_box = Tk.Text(self.parent, wrap='word', height = 11, width=50)
self.text_box.grid(column=0, row=0, columnspan = 2, sticky='NSWE', padx=5, pady=5)
sys.stdout = StdoutRedirector(self.text_box)
Mais ce qu'il fait est il ouvre deux fenêtres et la première fenêtre (le toplevel) fonctionne comme prévu et la seconde est idle, C'est ce qui est attendu jusqu'à ce que je clique sur un certain bouton qui après avoir appuyé sur imprime des données en continu et les données imprimées doivent apparaître dans le second widget texte de la fenêtre mais cela ne se produit pas et il n'y a pas de réponse du programme et quand je ferme la fenêtre Toplevel un message d'erreur apparaît
"TclError: invalid command name "".33328904.33329104"""
Alors, comment puis-je imprimer les données dans le widget de texte plutôt que dans la console?
EDIT:
inorder pour YA'LL aider si vous aux prises avec cela, je l'ai fait un script pour rediriger stdout vers un widget texte Tkinter, voir en action here :-)
Il peut être avantageux de créer un [exemple court, autonome et exécutable] (http://sscce.org/) qui illustre votre problème. Il y a beaucoup d'utilisateurs paresseux sur SO ([comme il se doit] (http://c2.com/cgi/wiki?LazinessImpatienceHubris)), donc plus vous facilitez le débogage de votre programme, plus vous recevrez de réponses . – Kevin