我今天完全崩溃了,让一些CSV的东西工作。下面是完整的代码和csv文件的剪切和粘贴。 我试图在shop order字段中输入一个与CSV第一列中的数字相匹配的数字。当匹配完成后,整行打印到大的输出框中,第二部分将拆分csv字段,以便将数据输入到quantity和description字段中,但我应该先学习爬网。在
我不能让csv显示在输出框,我不能确定什么是错误的,或者我是否丢失了代码。在
如果我删除了csv代码,输入到shop order框中的数字会打印到大的输出框中,输入的任何字母都会出现一个错误框,这个错误框工作得很好,这正是我下一步要做的。在
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
您的
sonumber
变量是Tkinter StringVar,而不是普通的Python字符串。进行比较时:您正在将Tkinter StringVar与字符串进行比较,因此它的计算结果始终为False。如果改用
sonumber.get()
,则得到实际值,应该没有问题。在相关问题 更多 >
编程相关推荐