2013-02-14 16 views
10

Sto creando una GUI utilizzando python e tkinter e mi chiedo solo se c'è comunque un testo di output in una finestra sulla GUI non presente l'interprete/shell?Python tkinter: crea un output in una casella di testo sulla GUI non presente nella shell

Grazie in anticipo

+0

possibile duplicato di [Python: conversione CLI in GUI] (http://stackoverflow.com/questions/12351786/python-conversing-cli-to-gui) –

+2

non proprio un dup è lo –

+0

stai chiedendo come fai "print 'foo'" nella tua GUI, ma fallo apparire magicamente nel widget di testo? –

risposta

7

Se, come suggerito nel commento di Bryan Oakley, si vuole “print 'pippo' nella vostra interfaccia grafica, ma hanno apparire magicamente nel widget di testo”, vedere le risposte a domanda precedente Python : Converting CLI to GUI. Questa risposta affronta il problema più semplice di come produrre output in una casella di testo. Per produrre una finestra di testo a scorrimento, creare e posizionare o imballare un widget di testo (chiamiamolo mtb), quindi utilizzare comandi come mtb.insert(Tkinter.END, ms) per aggiungere la stringa ms nella casella di testo mtb e come mtb.see(Tkinter.END) per far scorrere la casella. (Per maggiori dettagli, vedere “The Tkinter Text Widget” documentazione.) Ad esempio:

#!/usr/bin/env python 
import Tkinter as tk 

def cbc(id, tex): 
    return lambda : callback(id, tex) 

def callback(id, tex): 
    s = 'At {} f is {}\n'.format(id, id**id/0.987) 
    tex.insert(tk.END, s) 
    tex.see(tk.END)    # Scroll if necessary 

top = tk.Tk() 
tex = tk.Text(master=top) 
tex.pack(side=tk.RIGHT) 
bop = tk.Frame() 
bop.pack(side=tk.LEFT) 
for k in range(1,10): 
    tv = 'Say {}'.format(k) 
    b = tk.Button(bop, text=tv, command=cbc(k, tex)) 
    b.pack() 

tk.Button(bop, text='Exit', command=top.destroy).pack() 
top.mainloop() 

nota, se si prevede che la finestra di testo di rimanere aperto per lunghi periodi e/o accumulare gigabyte di testo, forse tenere traccia di quantità di dati si trova nella casella di testo e usa il metodo delete a intervalli per limitarlo.

+1

quello di cui ho bisogno è una scatola che viene posizionata sulla finestra della GUI che visualizza qualsiasi testo che viene emesso dalle funzioni chiamate dai pulsanti posizionati sulla GUI –

Problemi correlati