Как использовать tkinter с функциями и их переменными - PullRequest
0 голосов
/ 04 июля 2019

Я хочу нажать кнопку запуска, чтобы сохранить «Hello» в переменной, которая может использоваться другими функциями.Затем я хочу нажать кнопку печати, чтобы напечатать ее.

import tkinter

FONT = "Arial 16 bold"

window = tkinter.Tk()
B = tkinter.StringVar()

def main() :

    window.title("print")
    window.configure(bg="white")
    startButton = tkinter.Button(window, bg="white", font=FONT, text="START", command=myList)
    startButton.grid(row=0, column=0)
    printButton = tkinter.Button(window, bg="white", font=FONT, text="Print", command=printList)
    printButton.grid(row=0, column=1)

    tkinter.mainloop()

def myList():
    A = "Hello"
    global B 
    B.set(A)

def printList():

    value = B.get()
    printLabel = tkinter.Label(window, bg="white", font=FONT, textvariable=value)
    printLabel.grid(row=1, column=1)

main()

Я не знаю, как сохранить переменную таким образом, чтобы ее могли использовать другие функции.

1 Ответ

0 голосов
/ 04 июля 2019

Проблема состоит в том, что эти две строки кода:

value = B.get()
printLabel = tkinter.Label(window, bg="white", font=FONT, textvariable=value)

Вы устанавливаете значение опции textvariable для обычной переменной python.Это не сработает, это должна быть одна из специальных переменных tkinter.

Если все, что вы делаете, это отображаете значение внутри B, вам не нужно ничего делать, кроме как установить textvariable.Вам не нужно вызывать B.get() или объявлять B глобальным:

def printList():
    printLabel = tkinter.Label(window, bg="white", font=FONT, textvariable=B)
    printLabel.grid(row=1, column=1)

Если вы не хотите, чтобы они были связаны таким образом, вы можете получить значение B и назначьте его атрибуту text, а не textvariable:

def printList():
    value = B.get()
    printLabel = tkinter.Label(window, bg="white", font=FONT, text=value)
    printLabel.grid(row=1, column=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...