2017-01-30 94 views
0

我有init函數構造一個tkinter窗口。窗口內部有一個5 * 10的乘法和一個輸入框。如果用戶用正確的答案填充框,按下執行結果功能的按鈕後,必須用正確的信息顯示標籤,否則顯示錯誤信息的標籤。問題是:Python Tkinter條目 - 獲得值

即使答案是正確的,顯示錯誤的信息。如果我在結果函數中打印self.content,則在終端中顯示正確的值。但是如果結果函數語句存在問題。

從Tkinter的進口*

類道具:

def __init__(self): 

    self.root = Tk() 
    self.root.geometry("800x600") 

    self.x = 5 
    self.y = 10 

    self.title = Label(self.root, text = "TEST") 
    self.title.grid(row=0, column=0, columnspan=6) 
    self.title.config(font=("Courier", 30)) 

    self.labelx = Label(self.root,text=self.x) 
    self.labelx.grid(row=2, column=2) 
    self.labelx.config(font=("Courier", 30)) 

    self.epi = Label(self.root,text="X") 
    self.epi.grid(row=2, column=3) 
    self.epi.config(font=("Courier", 30)) 

    self.labely = Label(self.root,text=self.y) 
    self.labely.grid(row=2, column=4) 
    self.labely.config(font=("Courier", 30)) 

    self.total = Entry(self.root, font = "Courier 25 bold",justify="center",width=3) 
    self.total.grid(row=2, column=5, padx=20) 

    button = Button(self.root, text="OK", command = self.result) 
    button.grid(row=3, column=2) 

    self.content = Entry.get(self.total) 

    self.root.mainloop() 

def result(self): 
    if self.content == (self.x * self.y): 
     self.labres = Label(self.root, text="Right") 
     self.labres.grid(row=2, column=6) 
     self.labres.config(font=("Courier", 30)) 
    else: 
     self.labres = Label(self.root, text="Wrong") 
     self.labres.grid(row=2, column=6) 
     self.labres.config(font=("Courier", 30)) 

開始=道具()

回答

1

輸入的數值之前,您正在閱讀條目的內容。點擊按鈕後,您應該閱讀內容。

此外,您在self.content == (self.x * self.y)比較字符串與int。你應該使用int(self.content) == (self.x * self.y)

更新後的結果的功能是:

def result(self): 
     self.content = Entry.get(self.total) 
     if int(self.content) == (self.x * self.y): 
      self.labres = Label(self.root, text="Right") 
      self.labres.grid(row=2, column=6) 
      self.labres.config(font=("Courier", 30)) 
     else: 
      self.labres = Label(self.root, text="Wrong") 
      self.labres.grid(row=2, column=6) 
      self.labres.config(font=("Courier", 30)) 
+0

如果我這樣做:如果INT(self.content)我得到:ValueError異常:無效的字面INT()基數爲10: – Athon

+0

@Athon請確保'自我.content'不爲空或不包含任何字母或符號。你需要在'int(self.content)'中使用它之前驗證'self.content'' –

+0

你能解釋我以前的意思嗎? – Athon