在scrip之外启动类时,tkinter.get()不返回任何内容

2024-06-16 10:56:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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()

Tags: csvtextimportself脚本tkinterdefcolumn