2017-10-19 54 views
1

J'ai deux scripts python mainapp.py et calculations.pyComment passer le formulaire de calcul Commande de bouton dans le champ Entrée?

  1. mainapp.py
from tkinter import * 
import calculations 

root = Tk() 

mainapp = Frame(root) 
mainapp.grid() 

label1 = Label(mainapp, text="Value A") 
label1.grid(row=0, column=0) 
value_a = IntVar() 
entry1 = Entry(mainapp, textvariable=value_a) 
entry1.grid(row=0, column=1) 

label2 = Label(mainapp, text="Value B") 
label2.grid(row=1, column=0) 
value_b = IntVar() 
entry2 = Entry(mainapp, textvariable=value_b) 
entry2.grid(row=1, column=1) 

button = Button(mainapp, text="Calculate", 
       command=calculations.addvalues(a=value_a.get(), b=value_b.get())) 
button.grid(row=2, columnspan=2) 

label3 = Label(mainapp, text="A+B") 
label3.grid(row=3, column=0) 
value_c = IntVar() 
entry3 = Entry(mainapp, textvariable=value_c) 
entry3.grid(row=3, column=1) 

root.mainloop() 
  1. calculations.py

def addvalu es (a, b): Renvoyer a + b

Je souhaite passer le calcul de la commande Button au champ entry3. Comment faire ça?

Nous vous remercions de votre aide.

+1

Avez-vous essayé d'envoyer les résultats du calcul dans le champ de saisie avec 'insert()'? 'entry_field.insert (" end ", calc_results)' Gardez à l'esprit que vous devrez peut-être faire 'entry_field.delete (" 0 "," end ")' en premier afin de garder le champ effacé pour chaque nouvelle insertion. –

Répondre

1

vous avez très bien réussi et êtes très proche. Il est souvent préférable d'utiliser une fonction simple (voir foo() dans mon exemple) pour manipuler des boîtes de saisie, etc.

L'entrée 3.delete (0, END) fera en sorte que l'entrée soit claire (essayez-le sans cela ligne et voir ce qui se passe!)

from tkinter import * 
import calculations 


def foo(): 
    x = addvalues(a=value_a.get(), b=value_b.get()) 
    entry3.delete(0, END) 
    entry3.insert(END, x) 


root = Tk() 

mainapp = Frame(root) 
mainapp.grid() 

label1 = Label(mainapp, text="Value A") 
label1.grid(row=0, column=0) 
value_a = IntVar() 
entry1 = Entry(mainapp, textvariable=value_a) 
entry1.grid(row=0, column=1) 

label2 = Label(mainapp, text="Value B") 
label2.grid(row=1, column=0) 
value_b = IntVar() 
entry2 = Entry(mainapp, textvariable=value_b) 
entry2.grid(row=1, column=1) 

button = Button(mainapp, text="Calculate", 
       command=foo) 
button.grid(row=2, columnspan=2) 

label3 = Label(mainapp, text="A+B") 
label3.grid(row=3, column=0) 
value_c = IntVar() 
entry3 = Entry(mainapp, textvariable=value_c) 
entry3.grid(row=3, column=1) 

root.mainloop()