tkinter的.get()方法有问题。我使用一个简单的tkinter菜单在录制时将第9个值添加到csv中。当从编写该类的脚本中为此菜单运行一个类时,它工作得很好。但是,当尝试从其他脚本调用此应用程序时,我没有附加任何数据。那么,在另一个脚本中使用此菜单时,如何从.get()方法接收数据呢?下面是我的代码示例(这是应用程序的一部分,也是我从它所在的脚本启动它的一种方式):
from myo_interface import MyoRaw
import csv
import tkinter.messagebox
import sys
import pandas as pd
class recorderForData(tkinter.Tk):
def __init__(self):
tkinter.Tk.__init__(self)
self.counter = 0
self.doTick = True
self.title("Data recording")
self.m = MyoRaw(sys.argv[1] if len(sys.argv) >= 2 else None)
self.v = tkinter.StringVar()
self.v.set("")
self.entry = tkinter.Entry(self, textvariable=self.v)
self.protocol("WM_DELETE_WINDOW", self.on_closing)
self.B1 = tkinter.Button(self, text="Start recording", command=self.process_emg)
self.B2 = tkinter.Button(self, text="Stop recording", command=self.stop_recording)
self.B3 = tkinter.Button(self, text="Clean csv", command=self.clear_csv)
self.rows_number = tkinter.Label(self, text=self.counter)
def process_emg(self, emg, times):
name = self.v.get()
with open('own_test.csv', 'a+', newline='') as file:
writing = csv.writer(file)
writing.writerow(emg+(name,))
def start_app(self):
self.entry.grid(row=0, column=0)
self.B1.grid(row=1, column=0, sticky='nsew')
self.B2.grid(row=1, column=1, sticky='nsew')
self.B3.grid(row=1, column=2, sticky='nsew')
self.rows_number.grid(row=0, column=1, sticky='nsew')
self.mainloop()
def main():
rd = recorderForData()
rd.start_app()
if __name__ == '__main__':
main()
我从外面这样称呼它:
import test_record
def recordData():
rd = test_record.recorderForData()
rd.start_app()
所以,问题出在
v.get()
。把它改成entry.get()
可以解决这个问题。你知道吗相关问题 更多 >
编程相关推荐