Передавать переменные между модулями - PullRequest
2 голосов
/ 19 апреля 2020

У меня есть tkinter gui, который имеет базовое поле ввода c и кнопку поиска. Поиск в списке в модуле с именем SearchList.py

Main.py

from tkinter import *
from SearchList import *
root = Tk()
Output = []

def search():
    search = e.get()
    Output= SearchList.go(search)

#search bar
e= Entry(root, width=50, borderwidth=5)
e.grid(row=0, column=0, columnspan=2)

#search button
doneButton = Button(root, text="Search", width= 10, command=search).grid(row=0, column=4)


#arranges output in a 5 column rectangle
r, c = (1,0)

c_limit= 5

for thing in Output:
    myButton = Button(root, text=thing,height=5, width=25, borderwidth=3, padx=10).grid(row=r,column=c)
    c+=1
    if c == c_limit:
        c=0
        r+=1


root.mainloop()

Это позволяет мне ввести то, что я хочу найти, и отправить его в список поиска Модуль .py и выходные данные (совпадения из списка) расположены в виде прямоугольника.

SearchList.py

Output = []


def main(search):
    for x in range(list):
         if list[x]== search:
              Output.append(list[x])
         else:
              continue
    Output.sort
    return Output


def go(search):
    with client:
        client.loop.run_until_complete(main(search))

Но он продолжает возвращаться None. Также я знаю, что должен вызывать модуль неправильно - просто не знаю, как.

1 Ответ

1 голос
/ 19 апреля 2020

Здесь есть две незначительные проблемы. Во-первых, вы пропускаете return в SearchList.py:

def go(search):
    with client:
        # insert return here
        return client.loop.run_until_complete(main(search))

Во-вторых, вы не пишете в правильную переменную в search:

def search():
    # use global keyword to reference global variable Output
    global Output
    search = e.get()
    Output= SearchList.go(search)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...