от
Я хочу нажать кнопку запуска, чтобы сохранить «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 голосов
от
Проблема заключается в этих двух строках кода:
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)
    
...