Textfeld mit Text befüllen

Fragen zu Tkinter.
vogti
User
Beiträge: 31
Registriert: Mittwoch 21. Januar 2009, 21:53
Kontaktdaten:

Beitragvon vogti » Montag 16. März 2009, 21:42

So wird das doch aber schon beim start aufgerufen! Ich möchte die möglichkeit haben auch von anderen Funktionen aus ins Textfeld zu schreiben.

Was wenn ich in rechner.py noch eine Funktion habe, die etwas ganz anderes rechnet (z.b. rechne2). Derjenige, der format.py aufruft entscheidet sich zwischen rechne und rechne2. Je nach Entscheidung wird die Funktion aufgerufen und sollte das Ergebnis dann ins Textfeld schreiben. Bei deiner Lösung, DasIch, würde die Funktion Rechne doch schon beim Programm start geöffnet werden, ohne dass ich da irgendwas wählen kann.
rechner.py

Code: Alles auswählen

def rechne():
    a = 1
    b = 2
    Ergebnis = a+b
def rechne2():
    a=1
    b=2
    Ergebnis = a*b

(format.py wird eben dementsprechend geändert, dass man zwischen rechne und rechne2 wählen kann...)
DasIch
User
Beiträge: 2404
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Montag 16. März 2009, 21:57

Dafür gibt es Bedingungen usw. aber dass wirst du ja wohl selbst hinbekommen. Du solltest auf jedenfall nochmal ein Tutorial durcharbeiten.
Benutzeravatar
wuf
User
Beiträge: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Dienstag 17. März 2009, 08:06

Hallo vogti

Hier nochmal etwas zum ausprobieren:

Code: Alles auswählen

# Skriptname fill_textfield_01_02.py (wuf)

import Tkinter as tk
import rechner

def add():
    a = 1
    b = 2
    task = "%d + %d = %d" % (a, b, rechner.add(a, b))
    insert_task(task)

def multiply():
    a = 15
    b = 18
    task = "%d * %d = %d" % (a, b, rechner.multiply(a, b))
    insert_task(task)


def insert_task(task):
    textfeld.insert(tk.END, task + '\n')

f = tk.Tk()
f.geometry('500x500')
f.title('Test')

#Menuleiste erstellen
mle = tk.Menu(master=f)
f.config(menu=mle)

#Menu erstellen
m1 = tk.Menu(master=mle)
mle.add_cascade(label='Datei', menu=m1)
m1.add_command(label='Addiere', command=add)
m1.add_command(label='Multipliziere', command=multiply)
m1.add_command(label='Beenden', command=f.destroy)

textfeld = tk.Text(f, width=50, height=10)
textfeld.pack(side=tk.RIGHT, padx=2, pady=2)

f.mainloop()


Code: Alles auswählen

# Modul rechner.py

def add(a, b):
    """Addieren"""
    return a + b

def multiply(a, b):
    """Multiplizieren"""
    return a * b


Gruss wuf :wink:
Take it easy Mates!
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Freitag 20. März 2009, 01:45

Hier meine Version:
http://paste.pocoo.org/show/108761/

Das Verteilen der Klassen auf mehrere Dateien
sollte dann auch kein Problem mehr sein.

:wink:
yipyip

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder