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

Tkinter button command doesn't work when clicked

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

    root = Tk()


    #lists
    car =  [19225735, '611926', '2018', 'Hyundai', 'Sonata', 'White', 'Recon', ',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, column=1, padx=20

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

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

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

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

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

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

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

    mileage = Entry(root, width=30)
    mileage.grid(row=8, column=1, 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() returns 一个字符串,你把它和一个整数比较,如果你这样做,它总是假的 -> 将它转换为 int with int ()

  2. .insert 也需要一个索引,不只是 insert(data),还有 insert(index, data)

这里有个提示!!!

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

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

基本了解 Python 数据类型:

  1. 整数
  2. 浮动
  3. 字符串