2014-01-12 28 views
0

我的代碼有問題。我想使用Tkinter創建一個程序,在這個程序中,您將給出特定數量的列和原始數據,然後按下Addition或Deduction按鈕,您將選擇您想要執行的操作。這裏是我的代碼Tkinter:矩陣加法或扣除按鈕

from Tkinter import * 
import random 
root = Tk() 
root.wm_geometry("400x300+20+40") 
class ADialog: 
    def __init__(self, parent): 
     top = self.top = Toplevel(parent) 
     Label(top, text="X").pack() 
     self.e = Entry(top) #RAWS 
     self.e.pack(padx=15) 
     Label(top, text="Y").pack() 
     self.w = Entry(top) #COLUMNS 
     self.w.pack(padx=15) 
     b = Button(top, text="OK", command=self.ok) 
     b.pack(pady=5) 
    def ok(self): 
     self.x = self.e.get() 
     self.y = self.w.get() 
     Label(root,text="X= "+ self.x).pack() 
     Label(root,text="Y= "+ self.y).pack() 
     self.top.destroy() 
     Button(root, text="Addition", command=lambda:Addition(int(self.x),int(self.y))).pack() #ADDITION BUTTON 
     Button(root, text="Deduction", command=lambda:Deduction(int(self.x),int(self.y))).pack() # DEDUCTION BUTTON 
def Addition(x,y): 
    for i in range(x): 
     c=[] 
     for j in range(y): 
      c.append(random.randint(10,100)) 
     M.append(c) 
    for i in range(x): 
     a=[] 
     for j in range(y): 
      a.append(random.randint(10,100))   
     N.append(a) 
    for i in range(x): 
     v=[] 
     for j in range(y): 
      v.append(M[i][j]+N[i][j]) 
    K.append(v) 
    for i in range(x): 
     Label(root,text=K[i]).pack() 
def Deduction(x,y): 
    for i in range(x): 
     c=[] 
     for j in range(y): 
      c.append(random.randint(10,100))    
     M.append(c) 
    for i in range(x): 
     a=[] 
     for j in range(y): 
      a.append(random.randint(10,100))    
     N.append(a) 
    for i in range(x): 
     v=[] 
     for j in range(y): 
      v.append(M[i][j]-N[i][j]) 
    K.append(v) 
    for i in range(x): 
     Label(root,text=K[i]).pack() 


M=[] 
N=[] 
K=[] 
message=StringVar() 
message.set("Complete the Matrix") 
Label(root, textvariable=message).pack(padx=30) 
root.update() 
dial = ADialog(root) 
root.wait_window(dial.top) 
message.set("Matrix completed") 
root.update() 
root.mainloop() 
Button(root, text="Done", command=root.destroy).pack() #Button Done 

現在我的代碼工作,但有一些問題。 它們是:

  1. 如果你按下按鈕釦除或增加你會得到你的結果,但隨後如果您嘗試按其他按鈕,您將得到同樣的結果。
  2. 按鈕「完成」永遠不會出現......

你能幫助我嗎?

+0

我有一個小錯誤,但我修好了。但問題依然如故。請幫幫我 – GeorgeDavidKing

回答

0

「完成」按鈕從不出現,因爲您在mainloop退出後創建它,然後程序在創建後立即退出。您需要在致電mainloop之前創建所有小部件。

對於您發佈的代碼,我看不到加法和扣除按鈕可能調用相同的函數。所以,如果你得到了相同的結果,兩個函數都必須做同樣的事情。