2015-12-21 2 views
1

Как вы узнаете позицию в текстовом файле опции, выбранной из раскрывающегося списка? У меня есть текстовый файл с разными значениями, хранящийся на новых строках. Затем я загружаю это в массив, который формирует значения раскрывающегося списка. Я хотел бы знать позицию линии для значения, выбранного пользователем. Мой код пока включен ниже.Место в файле из выпадающего списка

from tkinter import * 


class search(): 
def __init__ (self, master): 

    self.master = master 
    self.master.title("Search For Quotes Screen") 
    self.master.geometry("2100x1400") 
    self.master.configure(background = 'white') 

    self.master.configure(background = "white") 
    self.Title = Label(self.master, text = "Quote Retrieval", font = ("calibri", 20), bg = "White") 
    self.Title.place(x=650, y = 10) 


    array=[]#initialises array 
    with open('PostCode_File.txt', 'r') as f:# opens name of your file 
     array= [line.strip() for line in f]#puts values of file in array. each line = one part of array 
    f.close() 



    Option = StringVar() 
    Option.set("Please select postcode of quote") 
    self.options = OptionMenu(self.master, Option, *array)#creates drop down menu 
    self.options.config(bg = 'navy', fg='white', font =('calibri', 20)) 
    self.options["menu"].config(bg="Navy", font=('calibri', 13), fg= 'white') 
    self.options.place(x=100, y=100) 

    print(self.options.get()) 

Я заметил, выпадающий не имеет функции, как в поле ввода текста или, может быть, им, используя это неправильно. Любая помощь будет оценена по достоинству.

+0

Являются ли ваши ценности уникальными? –

+0

Большинство значений есть, но могут быть некоторые значения, которые являются одинаковыми –

ответ

0

Если у вас есть уникальные строки в исходном файле, вы можете выполнить это, сохранив ссылку на свой массив параметров, а затем вызовите index на этом массиве, чтобы получить позицию выбранного элемента. Обратите внимание, что функция get() не находится на объекте OptionsMenu; он находится на объекте StringVar, что означает, что вам также нужно будет ссылаться на него. Например:

from tkinter import * 


class Search(): 
    def __init__(self, master): 

     self.master = master 
     self.master.title("Search For Quotes Screen") 
     self.master.geometry("2100x1400") 
     self.master.configure(background='white') 

     self.master.configure(background="white") 
     self.Title = Label(self.master, text="Quote Retrieval", font=("calibri", 20), bg="White") 
     self.Title.place(x=650, y=10) 

     with open('foo.txt', 'r') as f: # opens name of your file 
      self.array = [line.strip() for line in f] # puts values of file in array. each line = one part of array 
     f.close() 

     self.option = StringVar() 
     self.option.set("Please select postcode of quote") 
     self.options = OptionMenu(self.master, self.option, *self.array) # creates drop down menu 
     self.options.config(bg = 'navy', fg='white', font =('calibri', 20)) 
     self.options["menu"].config(bg="Navy", font=('calibri', 13), fg='white') 
     self.options.place(x=100, y=100) 

     self.button = Button(master, text='OK', command=self.on_ok) 
     self.button.place(x=100, y=150) 

    def on_ok(self): 
     value = self.option.get() 
     print(value, self.array.index(value)) 


if __name__ == '__main__': 
    master = Tk() 
    search = Search(master) 
    mainloop() 

Это не сработает, если строки в вашем исходном файле не уникальны.

Смежные вопросы