tkinter python структура программы - PullRequest
0 голосов
/ 02 февраля 2020

Я новичок в python программировании, и у меня есть небольшие проблемы со структурой программы: когда я делаю GUI в основной части python, тогда код работает:

import tkinter as tk

root = tk.Tk()
root.overrideredirect(True)
root.geometry("800x480")

def cb_Gebruiker():
    btnUser["text"]= "changed"

btnUser = tk.Button(root, text="User",command = cb_Gebruiker)
btnUser.place(x=1,y=1,width="300",height="73")


root.mainloop()

Когда я создаю GUI в функции, переменная btn является локальной, так что это не работает

def MakeBtn():
    btnUser = tk.Button(root, text="User",command = cb_Gebruiker)
    btnUser.place(x=1,y=1,width="300",height="73")

def cb_Gebruiker():
    btnUser["text"]= "changed"

MakeBtn()


root.mainloop()

Теперь у меня есть довольно большая программа, и я хочу GUI в отдельном файле, но тогда я не могу получить доступ к своим GUI компонентам ... И я не могу найти учебник о том, как структурировать программу (python имеет много возможностей: сценарий, модуль, объектно-ориентированный, ..)

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 02 февраля 2020

Вам потребуется lambda для задержки вызова команды с параметром.


def MakeBtn():
    btnUser = tk.Button(root, text="User", command = lambda: cb_Gebruiker(btnUser))
    btnUser.place(x=1, y=1, width="300", height="73")

def cb_Gebruiker(btnUser):
    btnUser["text"] = "changed"

MakeBtn()


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