Python数据不会输入CSV-fi

2024-09-28 17:19:38 发布

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

我正在为我的商店工作的项目,将允许我跟踪我的统计过程分析维度。我有一个2维的部分,我将测量5个样品。尺寸为OAL(整个长度)和倒钩直径。我让Python和tKinter创建了这个窗口,并将所有数据放在正确的位置,但它不会导出到CSV文件。它一直告诉我名称没有定义,但是变量确实存在,如果我使用print命令,shell中会出现正确的值。所以我知道这个变量存在,我不确定是不是因为我在用tKinter。任何帮助都将不胜感激。你知道吗

import time
from tkinter import *
import threading
import csv
import datetime


def gui():
    root = Tk()
    root.title("Troy Screw Products")

    titleLabel = Label(root,text="Inspection Worksheet")
    partNumLabel = Label(root,text="Part #68800")
    now = datetime.datetime.now()

    typeLabel = ["Barb Dia","Barb Dia","OAL","Knurl","Threads","Chamfer","OD","OD","OD"]
    dimLabel = [".356",".333",".437",".376","n/a",".258",".337",".321",".305"]
   tolLabel = [".354/.358",".331/.335",".433/.441",".374/.378","1/4-20",".252/.263",".335/.339",".319/.323",".303/.307"]
    observations = ["Obs 1","Obs 2","Obs 3","Obs 4","Obs 5"]
    cd1Obs = []

    Label(text="Inspection Worksheet").grid(row=0,column=0)
    Label(text="Part #68800").grid(row=1,column=0)

    r=0
    for c in typeLabel:
             Label(text=c,relief=RIDGE,width=15).grid(row=2,column=r)
             r=r+1
    r=0            
    for c in dimLabel:
            Label(text=c,relief=RIDGE,width=15).grid(row=3,column=r)
            r=r+1

    r=0            
    for c in tolLabel:
            Label(text=c,relief=RIDGE,width=15).grid(row=4,column=r)
            r=r+1

    r=0            
    for c in tolLabel:
            Checkbutton(width=15).grid(row=5,column=r)
            r=r+1

    Label(text="").grid(row=6,column=1)
    Label(text="").grid(row=7,column=1)

    Label(text="OAL").grid(row=8,column=2)
    Label(text="Barb Dia").grid(row=8,column=6)

    r=9            
    for c in observations:
            Label(text=c,width=15).grid(row=r,column=1)
            Label(text=c,width=15).grid(row=r,column=5)
            r=r+1

    dimOneOb1=StringVar()
    dimOneOb2=StringVar()
    dimOneOb3=StringVar()
    dimOneOb4=StringVar()
    dimOneOb5=StringVar()
    dimTwoOb1=StringVar()
    dimTwoOb2=StringVar()
    dimTwoOb3=StringVar()
    dimTwoOb4=StringVar()
    dimTwoOb5=StringVar()

    Entry(textvariable=dimOneOb1).grid(row=9,column=2)
    Entry(textvariable=dimOneOb2).grid(row=10,column=2)
    Entry(textvariable=dimOneOb3).grid(row=11,column=2)
    Entry(textvariable=dimOneOb4).grid(row=12,column=2)
    Entry(textvariable=dimOneOb5).grid(row=13,column=2)

    Entry(textvariable=dimTwoOb1).grid(row=9,column=6)
    Entry(textvariable=dimTwoOb2).grid(row=10,column=6)
    Entry(textvariable=dimTwoOb3).grid(row=11,column=6)
    Entry(textvariable=dimTwoOb4).grid(row=12,column=6)
    Entry(textvariable=dimTwoOb5).grid(row=13,column=6)

    def submitEntry():
        groupOal1=dimOneOb1.get()
        groupOal2=dimOneOb2.get()
        groupOal3=dimOneOb3.get()
        groupOal4=dimOneOb4.get()
        groupOal5=dimOneOb5.get()

        groupBarb1=dimTwoOb1.get()
        groupBarb2=dimTwoOb2.get()
        groupBarb3=dimTwoOb3.get()
        groupBarb4=dimTwoOb4.get()
        groupBarb5=dimTwoOb5.get()

        writeCsv()

    Button(text="Submit",command=submitEntry).grid(row=14,column=7)

    def writeCsv():
        with open("CD 68800 OAL.csv", "a") as cdOal: #open file and give file variable name; r=read, w=write, a=append
            cdOalWriter = csv.writer(cdOal) #Give writer a variable name
            cdOalWriter.writerow([now.strftime("%Y-%m-%d %H:%M"),groupOal1,groupOal2,groupOal3,groupOal4,groupOal5])
            csOal.close()



    root.mainloop()

op1 = threading.Thread(target = gui)
op1.start()

Tags: textinimportforgetcolumnrootwidth
1条回答
网友
1楼 · 发布于 2024-09-28 17:19:38

只需在方法中传递这些变量,writeCsv()。因为groupOassubmitEntry()函数的本地对象,所以它的调用函数writeCsv没有看到这样的对象。此外,下面使用对象列表的argument unpack idiom*(我注释掉了更详细的行):

def submitEntry():
    groupOal1=dimOneOb1.get()
    groupOal2=dimOneOb2.get()
    groupOal3=dimOneOb3.get()
    groupOal4=dimOneOb4.get()
    groupOal5=dimOneOb5.get()
    group0as = [groupOal1,groupOal2,groupOal3,groupOal4,groupOal5]

    groupBarb1=dimTwoOb1.get()
    groupBarb2=dimTwoOb2.get()
    groupBarb3=dimTwoOb3.get()
    groupBarb4=dimTwoOb4.get()
    groupBarb5=dimTwoOb5.get()

    writeCsv(*group0as)
    # writeCsv(groupOal1,groupOal2,groupOal3,groupOal4,groupOal5)

def writeCsv(a, b, c, d, e):
    with open("CD 68800 OAL.csv", "a") as cdOal:
        cdOalWriter = csv.writer(cdOal)
        cdOalWriter.writerow([now.strftime("%Y-%m-%d %H:%M"), a, b, c, d, e])
        csOal.close()

相关问题 更多 >