Python Tkinter函数顺序问题

Python Tkinter函数顺序问题,python,tkinter,Python,Tkinter,我的一个程序在两个文件中搜索一个特定的字符串(在本例中,是一辆车的号码牌)时遇到了一个问题。命令行界面上的基本程序运行良好,但是,我似乎无法使GUI版本正常工作。我怀疑这是因为GUI与标准函数的交互方式不同,但我不确定如何解决这个问题 import csv, sys, tkinter.messagebox from tkinter import * mGui = Tk() def read(Numberplate): if len(Numberplate) != 7:

我的一个程序在两个文件中搜索一个特定的字符串(在本例中,是一辆车的号码牌)时遇到了一个问题。命令行界面上的基本程序运行良好,但是,我似乎无法使GUI版本正常工作。我怀疑这是因为GUI与标准函数的交互方式不同,但我不确定如何解决这个问题

import csv, sys, tkinter.messagebox
from tkinter import *

mGui = Tk()

def read(Numberplate):
    if len(Numberplate) != 7:
        return False
    with open("Test Data.csv","r") as data:
        for row in data:
            if Numberplate in row:
                global details
                details = (row)
                return True
            else:
                return False
    data.close()

def read2(Numberplate):
    with open("Data.csv","r") as data2:
        for row in data2:
            if Numberplate in row:
                global speed
                speed = str("The vehicle\'s speed was " + row[8:] + "mph.")
                return True
    data2.close()

def callback():
    Numberplate = grab.get()
    if read(Numberplate) == False:
        tkinter.messagebox.showinfo("Results","This numberplate has not been recorded.")
        quit()
    if read(Numberplate) == True and read2(Numberplate) == True:
        tkinter.messagebox.showinfo("Results",(speed + details))

grab = StringVar()

mGui.configure(bg="blue")
mGui.title("Database Searcher")

mlabel = Label(text="Please enter the numberplate in the box below:",bg="purple").grid(row=0,column=3,columnspan=2)

mbutton = Button(mGui,text="Search",command=callback,bg="green").grid(row=5,column=3,columnspan=2)

mbox = Entry(mGui,textvariable=grab).grid(row=3,column=3,columnspan=3)

mGui.mainloop()
这个程序的想法是搜索两个文件,看看它们之间是否有一个共同的号码牌。如果是这样,他们的速度和驾驶员的详细信息将被提取并打印到消息框中。此时,所有条目似乎都返回相同的错误消息,即使条目是正确的


感谢您的阅读,我将感谢您提供的任何帮助。

您能同时显示您的
csv
文件吗?您是否知道,如果
Numberplate
的长度不同于7,您的
read
函数将始终返回
False
?请将您的文件添加到您的问题中,这使事情更容易阅读…是的,这是理想的功能。存储在csv文件中的数字板都是标准的,因此都遵循通常的LLNNLLL模式(L表示字母,N表示数字)。如果长度不是7,则numberplate将不在csv中,因此应返回False。此外,为什么在读取函数中需要此语句
全局详细信息