2017-04-04 110 views
0

我對Tkinter有一些小小的情況。我有一段代碼不斷從Thalmic的Myo Armband接收原始EMG數據,並將該數據(加上手勢的名稱)寫入csv文件。我設計了一個小小的tkinter界面,使它看起來更加用戶友好。 我需要的是寫一個功能,將停止以前開始的記錄功能。 另外我有一個標籤的問題,它顯示了一個csv文件中的行數,但這是另一個問題。 下面是代碼:用按鈕停止工作函數(Python,Tkinter)

from gesture_classificator import MyoRaw 
import csv 
import tkinter 
import tkinter.messagebox 
import sys 


root = tkinter.Tk() 
root.title("Recording data") 
m = MyoRaw(sys.argv[1] if len(sys.argv) >= 2 else None) 

v = tkinter.StringVar() 
entry = tkinter.Entry(root, textvariable=v) 
entry.grid(row=0, column=0) 
v.set("") 


def process_emg(emg, times): 
    name = v.get() 
    with open('own_test.csv', 'a+') as file: 
     writing = csv.writer(file) 
     writing.writerow(emg+(name,)) 


def show_row_count(): 
    with open('own_test.csv', 'r') as return_me_the_row_count: 
     reading = csv.reader(return_me_the_row_count) 
     data = list(reading) 
     row_count = len(data) 
     return row_count 


def start_recording(): 
    m.add_emg_handler(process_emg) 
    m.connect() 


def stop_recording(): 
    ??? 

B1 = tkinter.Button(root, text="Start the recording", command=start_recording) 
B2 = tkinter.Button(root, text="Stop the recording", command=stop_recording) 
rows_number = tkinter.Label(root, text=show_row_count) 
rows_number.config(text=show_row_count) 
B1.grid(row=1, column=0) 
B2.grid(row=1, column=1) 
rows_number.grid(row=0, column=1) 
root.mainloop() 

try: 
    while True: 
     m.run(1) 
except SystemExit: 
    pass 
finally: 
    m.disconnect() 

回答

1

按照MyoRaw代碼,你可能會喜歡的功能MyoRaw.disconnect(),你會使用這樣的:

def stop_recording(): 
    m.disconnect() 

在這種情況下,它會更容易和更快讓你檢查你正在使用的框架的文檔和/或代碼。