单击时 Tkinter 按钮命令不起作用

问题描述

我正在制作一个程序来搜索股票编号列表(列表中的前 8 位整数),然后在输入框内返回列表中的其余值,但是当我单击搜索按钮时,它会不执行其功能。有什么建议吗? (我也是编码新手,有什么地方可以缩短我的代码以提高效率吗?)

    root = Tk()


    #lists
    car =  [19225735,'611926','2018','Hyundai','Sonata','White','Recon','$25,000','Sedan',32,123]

   #funtion
   def search():
       x = stockNumber.get() 
       if (x == car[0]):
          vinNumber.insert(car[1])
          make.insert(car[3])
          model.insert(car[4])
          color.insert(car[5])
          status.inset(car[6])
          price.insert(car[7])
          size.insert(car[8])
          mileage.insert(car[9])



    #text Boxes --------------------------------------------
    stockNumber = Entry(root,width=30)
    stockNumber.grid(row=0,column=1,padx=20)

    vinNumber = Entry(root,width=30)
    vinNumber.grid(row=1,padx=20

    year = Entry(root,width=30)
    year.grid(row=2,padx=20)

    make = Entry(root,width=30)
    make.grid(row=3,padx=20)

    model = Entry(root,width=30)
    model.grid(row=4,padx=20)

    color = Entry(root,width=30)
    color.grid(row=5,padx=20)

    status = Entry(root,width=30)
    status.grid(row=6,padx=20)

    price = Entry(root,width=30)
    price.grid(row=7,padx=20)

    size = Entry(root,width=30)
    size.grid(row=8,padx=20)

    mileage = Entry(root,width=30)
    mileage.grid(row=8,padx=20)
    
    #button command-------------------------------
    enter = Button(root,text = "Search",padx=40,pady=20,command=search)
    enter.grid(row=9,column=0)



    #labels ------------------------------------------------
    snLabel = Label(root,text="Stock Number")
    snLabel.grid(row=0,column=0)

    vnLabel = Label(root,text="Vin Number")
    vnLabel.grid(row=1,column=0)

    yearLabel = Label(root,text="Year")
    yearLabel.grid(row=2,column=0)

    makeLabel = Label(root,text="Make")
    makeLabel.grid(row=3,column=0)

    modelLabel = Label(root,text="Model")
    modelLabel.grid(row=4,column=0)

    colorLabel = Label(root,text="Color")
    colorLabel.grid(row=5,column=0)

    statusLabel = Label(root,text="Status")
    statusLabel.grid(row=6,column=0)

    sizeLabel = Label(root,text="Size")
    sizeLabel.grid(row=7,column=0)

    mileLabel = Label(root,text="Mileage")
    mileLabel.grid(row=8,column=0)

解决方法

按钮工作正常,您的功能是问题:

def search():
   x = int(stockNumber.get())
   if (x == car[0]): 
      vinNumber.insert(0,str(car[1]))
      make.insert(0,str(car[3]))
      model.insert(0,str(car[4]))
      color.insert(0,str(car[5]))
      status.insert(0,str(car[6]))
      price.insert(0,str(car[7]))
      size.insert(0,str(car[8]))
      mileage.insert(0,str(car[9]))

这是我修复的:

  1. stockNumber.get() 返回一个字符串,您将其与一个整数进行比较,如果您这样做,它将始终为 false -> 使用 int() 将其转换为 int

  2. .insert 也需要一个索引,不仅仅是 insert(data) 而是 insert(index,data)

,

这里有个提示!!!

您需要查看每个数据点并了解您希望函数提取的数据类型。是的,你想要一个号码!但它是一个“int”,一个浮点数,它是什么???

看看你的 search() 函数。它不抓取数据的唯一原因是您需要确保该函数正在寻找正确类型的数据。由于“股票编号”可能是一个整数,因此您需要在函数中指定它。

对 Python 数据类型有一个基本的了解:

  1. 内部
  2. 浮动
  3. 字符串