Идея состоит в том, что когда пользователь запускает программу цикла, он должен сгенерировать файл и сохранить в нем некоторые данные. Итак, пользователь вводит номер, выбирает каталог, а затем программа запускается. Но есть некоторые проблемы на каждом этапе цикла. Он снова просит выбрать каталог, а затем переходит в TypeError.
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
import os
import datetime
import csv
import threading
class Application(Frame):
def __init__(self, master):
super().__init__(master)
self.master = master
self.mainframe = ttk.Frame(master, padding='5 5 10 10')
self.mainframe.grid(column=0, row=0, sticky=N + S + W + E)
self.measureFrame()
self.connectionConf()
self.meas()
def connectionConf(self):
self.confFrame = ttk.Frame(self.mainframe, padding='5 5 10 10').grid(column=0, row=3)
self.confFreq = Label(self.confFrame, text='Number:')
self.confFreq.grid(column=1, row=4, pady=5, stick=W)
self.freqSet = Entry(self.confFrame, width=6)
self.freqSet.grid(column=2, row=4, pady=5, stick=W)
def measureFrame(self):
self.name = StringVar()
self.mesFrame = ttk.Frame(self.mainframe, padding='5 5 10 10').grid(column=0, row=5)
self.mesHeader = Label(self.mesFrame, text='Path to save', font=10).grid(column=1, row=5, columnspan=2
, pady=10, stick=W)
self.ent1 = Entry(self.mesFrame, textvariable=self.name, width=50)
self.ent1.grid(column=1, row=7, columnspan=3, pady=5, stick=W)
self.button1 = Button(self.mesFrame, text='Open', command=self.browseButton)
self.button1.grid(column=4, row=7, pady=5, stick=W)
def browseButton(self):
filedir = filedialog.askdirectory()
filedir = self.name.set(filedir)
return filedir
def meas(self):
self.mesframe = ttk.Frame(self.mainframe, padding='5 5 10 10').grid(column=0, row=8)
self.startb = Button(self.mesframe, text='Start',
command=lambda: threading.Thread(target=self.startMeas).start())
self.startb.grid(column=1, row=10, pady=5, stick=W)
def filename_gen(self):
basename = self.freqSet.get()
suffix = datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S')
filetype = '.csv'
genfile = '_'.join([suffix, basename, filetype])
ressfile = os.path.join(self.browseButton(), genfile)
return ressfile
def startMeas(self):
with open(self.filename_gen(), 'a', newline='') as marks_csv:
cur_mark = 'None'
marks_wr = csv.writer(marks_csv)
marks_wr.writerow(cur_mark)
self.after(1000, self.startMeas)
window = Tk()
window.geometry('700x600')
app = Application(master=window)
app.columnconfigure(0, weight=1)
app.rowconfigure(0, weight=1)
app.mainloop()
window.quit()