2017-10-19 88 views
1

我有兩個Python腳本mainapp.py,和calculations.py如何將計算表單按鈕命令傳遞到輸入字段?

  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() 
  • calculations.py
  • def addvalu es(a,b): return a + b

    我想通過按鈕命令計算到entry3字段。怎麼做?

    感謝您提前給予幫助。

    +1

    您是否嘗試過使用'insert()'發送計算結果到輸入字段? 'entry_field.insert(「end」,calc_results)'請記住,您可能需要首先執行'entry_field.delete(「0」,「end」),以便爲每個新插入保留字段清除。 –

    回答

    1

    你做得非常好,非常接近。通常使用一個簡單的函數(參見我的例子中的foo())來操縱輸入框等等更好。

    entry3.delete(0,END)將確保條目清晰看看會發生什麼!)

    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()