【发布时间】:2016-02-17 00:40:22
【问题描述】:
我今天在让一些 CSV 文件正常工作方面完全崩溃了。下面是完整的代码以及 csv 文件的剪切和粘贴。 我正在尝试做的是在车间订单字段中输入一个与 CSV 第一列中的数字匹配的数字。当匹配到整行打印到大输出框时,第二部分将拆分 csv 字段,以便将数据输入到数量和描述字段中,但我可能应该先学会爬行。
我无法让 csv 显示在输出框中,我无法确定问题出在哪里,或者我是否缺少代码。
如果我删除 csv 代码,输入到车间订单框中的数字会打印到大输出框中,输入的任何字母都会显示一个运行良好的错误框,它只是下一个问题。
from tkinter import *
from tkinter import ttk
import sys
import csv
from csv import DictReader
class GUI:
def __init__(self, rootWindow):
#variable
sonumber = StringVar()
result = int()
#item1
self.label = ttk.Label(rootWindow, text="Shop Order:")
self.label.grid(row=1, column=1, sticky=(E), padx=3, pady=3)
self.SOentry = ttk.Entry(rootWindow, width=5, background="white", textvariable = sonumber)
self.SOentry.grid(row=1, column=2, sticky=(W, E), padx=3, pady=3)
#item2
self.label2 = ttk.Label(rootWindow, text="Quantity:")
self.label2.grid(row=1, column=3, sticky=(E), padx=3, pady=3)
self.outputQty = Text(rootWindow, width=5, height=1, background="white")
self.outputQty.grid(row=1, column=4, sticky=(W, E), padx=3, pady=3)
#item3
self.label3 = ttk.Label(rootWindow, text="Description:")
self.label3.grid(row=2, column=1, sticky=(E), padx=3, pady=3)
self.outputDesc = Text(rootWindow, width=5, height=1, background="white")
self.outputDesc.grid(row=2, column=2, columnspan=5, sticky=(W, E), padx=3, pady=3)
#output
self.label4 = ttk.Label(rootWindow, text="Drawings:")
self.label4.grid(row=3, column=1, sticky=(N,E), padx=3, pady=3)
self.dwgoutputbox = Text(rootWindow, width=50, height=15, background="white")
self.dwgoutputbox.grid(row=3, column=2, columnspan=5, padx=3, pady=3)
sys.stdout = TextRedirector(self.dwgoutputbox, "printdwgoutputbox") #redirects from shell to screen
#buttons
def DoASearch():
try:
print(int(sonumber.get()))
except ValueError:
messagebox.showwarning("Fail !!", "Please enter a valid Shop Order number.")
with open("lesspreadsheettest.csv") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
result=(row['Shop Order'])
if sonumber == result:
print(row['Shop Order'], row['Part Number'], row['Description'])
self.searchbutton = ttk.Button(rootWindow, text="Search", command=DoASearch)
self.searchbutton.grid(row=1, column=7, sticky=W, padx=3, pady=3)
def clear_text():
self.SOentry.delete(0, 'end')
self.clrsearchbutton = ttk.Button(rootWindow, text="Reset", command=clear_text)
self.clrsearchbutton.grid(row=2, column=7, sticky=W, padx=3, pady=3)
#
self.exitbutton = ttk.Button(rootWindow, text="Exit", command=rootWindow.destroy)
self.exitbutton.grid(row=3, column=7, sticky=(N,W), padx=3, pady=3)
class TextRedirector(object):
def __init__(self, widget, tag="printdwgoutputbox"):
self.widget = widget
self.tag = tag
def write(self, str):
self.widget.configure(state="normal")
self.widget.insert("end", str, (self.tag,))
self.widget.configure(state="disabled")
def main():
global label
rootWindow = Tk()
rootWindow.title("Production Drawings")
rootWindow.geometry("575x325+600+300")
gui = GUI(rootWindow)
rootWindow.mainloop()
main()
My test csv code is
Shop Order Part Number Description Quantity
12345 5-1841111-1 Ferrari California 1
12346 5-1841222-2 Porsche 911 2
12347 5-1841333-3 Lamborghini Aventador 3
12348 5-1841444-4 Jaguar F-Type 4
12349 5-1841555-5 Bugatti Veyron 5
【问题讨论】:
-
这看起来不像
csv数据。你的文件里真的有逗号吗?您可以只打印搜索功能中的第一行吗? -
抱歉,显示的 csv 是从 excel 剪切和粘贴的,这可能是没有显示逗号的原因。搜索代码以“Def doasearch”开头,我包含了整个代码,以防有人想运行它