2015-07-10 104 views
-2

我寫了一段代碼從我的arduino中讀取模擬值,並在一個簡單的Python應用程序中監視結果,但是當我在應用程序中點擊「開始」按鈕時,出現此錯誤:Tkinter回調中出現異常 回溯(最近通話最後一個)在Tkinter回調中的例外

和編譯器所在的錯誤在這instraction:analoglabel.config(文= STR(pin.read()))

對不起,我coudn't填充全部錯誤信息

這是我的代碼:

import pyfirmata 
from pyfirmata import util 
import Tkinter 
from time import sleep 

def press(): 
    it = util.Iterator(board) 
    it.start() 
    while True: 
    if flag.get(): 
     analoglabel.config(text=str(pin.read())) 
     analoglabel.update_idletasks() 
     root.update() 
    else: 
     break 
    board.exit() 
    root.destroy() 

def exit_command(): 
flag.set(False) 

port = '/dev/ttyACM0' 
board = pyfirmata.Arduino(port) 
sleep(5) 
pin = board.get_pin('a:0:i') 

root = Tkinter.Tk() 
root.title("Analog read by hamzawi") 
root.minsize(300, 50) 

startbutton = Tkinter.Button(root, 
          text="START", 
          command=press) 
startbutton.grid(column=1, row=2) 

exitbutton = Tkinter.Button(root, 
         text="EXIT", 
         command=exit_command) 
exitbutton.grid(column=2, row=2) 

label = Tkinter.Label(root, 
        text="The value is: ") 
label.grid(column=1, row=1) 

analoglabel = Tkinter.Label(root, text=" ") 
analoglabel.grid(column=2, row=1) 

flag = Tkinter.BooleanVar() 
flag.set(True) 

root.mainloop() 

請我需要幫助!!並且非常感謝

+1

你好,歡迎來到StackOverflow。請花一些時間閱讀幫助頁面,尤其是名爲[「我可以詢問什麼主題?」(http://stackoverflow.com/help/on-topic)和[「我應該問什麼類型的問題避免問?「](http://stackoverflow.com/help/dont-ask)。更重要的是,請閱讀[Stack Overflow問題清單](http://meta.stackexchange.com/q/156810/204922)。您可能還想了解[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

+0

您將不得不告訴我們我們能夠幫助您的實際錯誤。 –

+0

這裏是第1部分,因爲它很長:在Tkinter回調中的例外 回溯(最近呼叫最後): 文件「/usr/lib/python2.7/lib-tk/Tkinter.py」,行1489,在__call__中 返回自我.func(* args) 文件「/home/hamzawi/Documents/Python_projects/potentioPython/pot.py」,第13行,按 analoglabel.config(text = str(val)) –

回答

-3
from tkinter import * 

import sys 

import tkinter 

from time import sleep 

import pyfirmata # not in wondows 

from pyfirmata import util # not in wondows 

def press(): 

    it = util.Iterator(board) 

    it.start() 

    while True: 

    if flag.get(): 

     analoglabel.config(text=str(pin.read())) 

     analoglabel.update_idletasks() 

     root.update() 

    else: 

     break 

    board.exit() 

    root.destroy() 

def exit_command(): 

flag.set(False) 

port = '/dev/ttyACM0' 

board = pyfirmata.Arduino(port) # not in wondows 

sleep(5) 

pin = board.get_pin('a:0:i') # not in wondows 

root = tkinter.Tk() 

root.title("Analog read by hamzawi") 

root.minsize(300, 50) 

start_button = tkinter.Button(root, text='start', command=press) 

start_button.grid(column=1, row=2) 

exit_button = tkinter.Button(root, text="EXIT", command=exit_command) 

exit_button.grid(column=2, row=2) 

label = tkinter.Label(root, 

        text="The value is: ") 

label.grid(column=1, row=1) 

analoglabel = tkinter.Label(root, text=" ") 

analoglabel.grid(column=2, row=1) 

flag = tkinter.BooleanVar() 

flag.set(True) 

root.mainloop() 
+0

請考慮編輯您的帖子以添加關於您的代碼的更多解釋以及爲什麼它可以解決問題。一個主要包含代碼的答案(即使它正在工作)通常不會幫助OP瞭解他們的問題。也請看看你的代碼重新格式化,它似乎可能是縮進,但也有很多不必要的空白行。 – SuperBiasedMan

0

第一次通過你的循環一切都很好。然後你破壞根窗口。下一次通過循環嘗試配置標籤小部件,但它已被銷燬。

您確定要破壞循環內的根窗口嗎?