需要一些帮助来创建有效的搜索功能吗

2024-06-28 19:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我在stackoverflow的第一篇文章

我是一名飞行员,是软件界的新手,我自己也在尝试学习python

我正在尝试使用gui创建一个简单的搜索函数来搜索列表中的多个值

我已经为飞行员的姓名和级别创建了两个输入框

我还创建了一个名为Pilot的类,其中包含两个相邻的随机飞行员信息列表

我的目的是在填写姓名和等级框时搜索列表,以返回有关飞行员的所有相关信息,但我停了下来。我还尝试连接“name”和“rank”来搜索函数,但也失败了

它给出了以下错误:

ALWAYS THE RESULT IS "NOT FOUND"

我的代码:

from tkinter import *

root = Tk()

class Pilot():

  def __init__(self, name, age, rank, fleet, callsign, fail):
    self.name = name
    self.age = age
    self.rank = rank
    self.fleet = fleet
    self.callsign = callsign
    self.fail = fail





  def __repr__ (self):

      return "({},{},{},{}, {}, {})".format(self.name, self.age,self.rank,self.fleet, self.callsign, self.fail)
    


p1= Pilot("tom kazansky","22","lt","f14", "iceman","0")
p2= Pilot("pete mitchell","23","lt","f14", "maverick","3")
pilots =[p1,p2]



label_1 = Label(root, text = "name")
label_2 = Label(root, text = "rank")
entry_1 = Entry(root)
entry_2 = Entry(root)

def p_name(pilots):
    return pilots.name
def p_rank(pilots):
    return pilots.rank


def search(*pilots, key1 = p_name, key2 = p_rank):
            
    if entry_1 and entry_2 in pilots:
        print("found!")
            
    elif entry_1 and entry_2 not in pilots:
        print("not found!")
        
        

button_1 =Button(root, text = "search", command = search)


label_1.grid(row =0)
label_2.grid(row =1)

entry_1.grid (row =0,column =1)
entry_2.grid (row =1,column =1)

button_1.grid(row =3)



    
root.mainloop()

什么阻止搜索返回记录?也许是关于*args或**kwargs的


Tags: nameselfagedefrootgridrowfail
1条回答
网友
1楼 · 发布于 2024-06-28 19:32:17

你看起来很接近。我们可能需要知道你犯了什么样的错误,或者到底是什么不起作用,然后才能提供太多帮助

我可以告诉您,您实际上还没有从条目GUI对象中获取文本:

 entry_1 = Entry(root)

 if entry_1 and entry_2 and entry_3 in pilots:

根据上面的代码entry_1是文本对象本身(页面上的框)。if语句检查这些文本框对象是否都在引导对象列表中(我假设为false)

如果您试图通过按搜索按钮获取这些文本框的内容,则需要使用Entry.get()

如果我正确理解了您的意图,那么您应该从更新以下函数开始

def search(pilots, key1 = p_name, key2 = p_rank):
        
if entry_1.get() and entry_2.get() in pilots:
    print("found!")
        
elif entry_1.get() and entry_2.get() not in pilots:
    print("not found!")

您可以使用此链接了解有关Tkinter的更多信息:

https://docs.python.org/3/library/tkinter.html#module-tkinter

请点击此链接了解更多具体信息

https://docs.python.org/3/library/tk.html

祝你好运

相关问题 更多 >