2013-02-14 7 views
10

Ich mache eine GUI mit Python und Tkinter und nur darüber nachzudenken, ob es irgendwie Ausgabetext erscheint in einem Fenster auf der GUI nicht auf der Dolmetscher/die Shell?Python tkinter: Stellen Sie eine Ausgabe in einem Textfeld auf GUI nicht in der Shell

Vielen Dank im Voraus

+0

mögliche Duplikate von [Python: CLI in GUI konvertieren] (http://stackoverflow.com/questions/12351786/python-converting-client-gui) –

+2

nicht wirklich ein dup ist es –

+0

Fragen Sie wie tue "print 'foo'" in deiner GUI, aber erscheint es magisch im Text-Widget? –

Antwort

7

Wenn, wie in Bryan Oakley Kommentar vorgeschlagen, wollen Sie „print 'foo' in der GUI, aber habe es in dem Text-Widget magisch erscheinen“, siehe Antworten in vorheriger Frage Python : Converting CLI to GUI. Diese Antwort behandelt das einfachere Problem, wie die Ausgabe in einer Textbox erzeugt wird. Um ein scrollendes Textfenster zu erstellen, erstellen und platzieren Sie ein Text-Widget (nennen wir es mtb) und verwenden dann Befehle wie , um die Zeichenfolge ms in das Textfeld mtb einzufügen, und wie mtb.see(Tkinter.END), um die Box scrollen zu lassen. (Siehe „The Tkinter Text Widget“ Dokumentation für weitere Details.) Zum Beispiel:

#!/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() 

Hinweis, wenn Sie das Textfenster erwarten vielleicht bleiben offen für längere Zeit und/oder zu akkumulieren Gigabyte Text, zu verfolgen, wie viele Daten ist in dem Textfeld, und verwenden Sie die Methode delete in Intervallen, um es zu begrenzen.

+1

Was ich brauche, ist eine Box, die auf dem GUI-Fenster platziert wird, das jeden Text anzeigt, der von Funktionen ausgegeben wird, die durch Knöpfe auf der GUI aufgerufen werden –

Verwandte Themen