Как я могу сохранить несколько пользовательских входов в переменные в Python tkinter? - PullRequest
0 голосов
/ 08 апреля 2020

Я делаю глупый калькулятор, используя Tkinter, и у меня есть глобальная переменная под названием «фраза». В общем, у меня есть кнопки (бессмысленные имена), и я просто хочу добавить / вычесть и распечатать предложения, такие как «банан» + «молоко» = «банановое молоко!» Но у меня возникают трудности при сохранении пользовательских данных в глобальную переменную «фраза». Ниже приведен мой код:

from tkinter import *

phrase = ''


# To press any button
def press(item):
    global phrase
    if item == 'Banana':
        phrase = 'This is yellow'
    elif item == 'Milk':
        phrase = 'This is white'
    return equation.set(phrase)

############################### Here is the fucntion adding together
def recipe(item):
    global phrase
    if item == 'AND':
        phrase = phrase + ' ' + str(item)
        equation.set(phrase)



# Driver code
if __name__ == '__main__':
    # create application window
    app = Tk()

    # title
    app.title("Silly Calculator")

    # geometry
    app.geometry('290x162')

    # background color
    app.configure(bg='pink')

    equation = StringVar()
    windows = Entry(app, textvariable=equation)
    windows.grid(columnspan=5, ipadx=100, ipady=10)
    equation.set('Listen to your Funculator!')

    # Create buttons and other accessories
    button1 = Button(app, text='Banana', fg='yellow', bg='purple',
                     command=lambda: press('Banana'), height=2, width=10)
    button1.grid(row=2, column=0, sticky="NSEW")

    button2 = Button(app, text='Milk', fg='brown', bg='pink',
                     command=lambda: press('Milk'), height=2, width=10)
    button2.grid(row=2, column=1, sticky="NSEW")

    plus = Button(app, text='AND', fg='black', bg='white',
                  command=lambda: recipe('AND'), height=2, width=10)
    plus.grid(row=4, column=0, sticky="NSEW")

# start the GUI
app.mainloop()

Поэтому я попытался сделать фазу глобальной переменной списком [] и, возможно, получить доступ по номеру индекса. Но это не работает, и я получаю только один последний пользовательский ввод, сохраненный в «фразе». Есть ли способ, которым я могу сохранить в различных переменных, таких как фразу_1, фразу_2, чтобы я мог использовать их, когда:

# This is enter
def recipe(item):
    global phrase
    if item == 'AND':
        phrase = phrase_1 + phrase_2
        equation.set(phrase)

как это?

Любой совет будет оценен !!

1 Ответ

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

Как то так? Или я не правильно понял?

from tkinter import *

phrase = []
phrase_string = ''


# To press any button
def press(item):
    global phrase_string
    global phrase

    if item == 'Banana':
        phrase.append(' Banana')
    elif item == 'Milk':
        phrase.append(' Milk')
    elif item == 'AND':
        phrase.append(' and')

    phrase_string = ''
    for ele in phrase:
        phrase_string += ele

    equation.set(phrase_string)



# Driver code
if __name__ == '__main__':
    # create application window
    app = Tk()

    # title
    app.title("Silly Calculator")

    # geometry
    app.geometry('290x162')

    # background color
    app.configure(bg='pink')

    equation = StringVar()
    windows = Entry(app, textvariable=equation)
    windows.grid(columnspan=5, ipadx=100, ipady=10)

    # Create buttons and other accessories
    button1 = Button(app, text='Banana', fg='yellow', bg='purple',
                     command=lambda: press('Banana'), height=2, width=10)
    button1.grid(row=2, column=0, sticky="NSEW")

    button2 = Button(app, text='Milk', fg='brown', bg='pink',
                     command=lambda: press('Milk'), height=2, width=10)
    button2.grid(row=2, column=1, sticky="NSEW")

    plus = Button(app, text='AND', fg='black', bg='white',
                  command=lambda: press('AND'), height=2, width=10)
    plus.grid(row=4, column=0, sticky="NSEW")

    app.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...