2017-10-01 9 views
0

複数のインスタンス名をクラスからクラスに入力しようとすると、複数の数学的方程式を同時に入力フィールドのユーザーから入力された値。tkinterボタンを使用してクラスにリスト値を渡す

例:aud_non_comm_short/aud_non_comm_long & cad_non_comm_short/cad_non_comm_longと両方のラベルの結果を表示します。あなたは彼らに同じ名前ので、あなたは、あなたの変数と関数の命名を台無しに

from tkinter import * 
from tkinter import ttk 

class CoTValues: 

    def non_comm_short(self, master, e_row): 
     self.master = master 
     self.e_row = e_row 
     self.non_comm_short = IntVar() 
     entry = Entry(self.master, textvariable=self.non_comm_short, width="9") 
     entry.grid(row=self.e_row, column="1", padx="5", pady="5") 

    def non_comm_long(self, master, e_row): 
     self.master = master 
     self.e_row = e_row 
     self.non_comm_long = IntVar() 
     entry = Entry(self.master, textvariable=self.non_comm_long, width="9") 
     entry.grid(row=self.e_row, column="2", padx="5", pady="5") 

    def display_data(self): 
     print(self.non_comm_short.get()) 
     print(self.non_comm_long.get()) 

root = Tk() 
root.minsize(width="500", height="500") 

aud_non_comm_short = CoTValues() 
aud_non_comm_short.non_comm_short(root, 1) 

aud_non_comm_long = CoTValues() 
aud_non_comm_long.non_comm_long(root, 1) 

cad_non_comm_short = CoTValues() 
cad_non_comm_short.non_comm_short(root, 2) 

cad_non_comm_long = CoTValues() 
cad_non_comm_long.non_comm_long(root, 2) 

var_name = [aud_non_comm_short, aud_non_comm_long] 

btn = ttk.Button(root, text="Submit", command=lambda: for x in range(len(var_name): var_name[x].display_data()) 
btn.grid(row="4", column="3") 

root.mainloop() 
+0

この場合、なぜ「ラムダ」を使用していますか?なぜ普通の関数を呼び出さないのですか? –

答えて

0

は私がボタンを経由して、ラムダと値を渡すに問題があります。私はラムダボタンの呼び出しが私のために機能しなかったので、私は機能を変更しました。これは仕事をしますが、それは汚い解決策です。だからあなたは単にそれを改善することができます。

from tkinter import * 
from tkinter import ttk 

class CoTValues: 

    def define_non_comm_short(self, master, e_row): 
     self.master = master 
     self.e_row = e_row 

     self.non_comm_short = IntVar() 
     self.entry = Entry(self.master, textvariable=self.non_comm_short, width="9") 
     self.entry.grid(row=self.e_row, column="1", padx="5", pady="5") 

    def define_non_comm_long(self, master, e_row): 

     self.master = master 
     self.e_row = e_row 

     self.non_comm_long = IntVar() 
     self.entry = Entry(self.master, textvariable=self.non_comm_long, width="9") 
     self.entry.grid(row=self.e_row, column="2", padx="5", pady="5") 

    def display_data(self, var_name): 
     for v in var_name: 
      print('') 
      print(v.entry.get()) 
     print("-------------") 

#-------------------------- 
def button_func(var_name): 
    aud_non_comm_short.display_data(var_name) 

#---------- main ---------- 
root = Tk() 
root.minsize(width="500", height="500") 

aud_non_comm_short = CoTValues() 
aud_non_comm_short.define_non_comm_short(root, 1) 

aud_non_comm_long = CoTValues() 
aud_non_comm_long.define_non_comm_long(root, 1) 

cad_non_comm_short = CoTValues() 
cad_non_comm_short.define_non_comm_short(root, 2) 

cad_non_comm_long = CoTValues() 
cad_non_comm_long.define_non_comm_long(root, 2) 

var_name = [aud_non_comm_short, aud_non_comm_long] 

btn = ttk.Button(root, text="Submit", command= lambda: button_func(var_name)) 
btn.grid(row="4", column="3") 
root.mainloop() 
+0

ありがとうたくさんのコギトこれは私の問題を解決したあなたたちは素晴らしいです! –

関連する問題