Есть ли более эффективный способ написать этот класс графического интерфейса Tkinter?Python

Программы на Python
Anonymous
Есть ли более эффективный способ написать этот класс графического интерфейса Tkinter?

Сообщение Anonymous »

Я начинающий программист, и у меня есть небольшой проект, который мне нужно сделать, и я совершенно слеп к этому проекту, поэтому я создаю свои окна с графическим интерфейсом, объявляя каждый виджет, используемый в конструкторе класса, и каждый раз, когда мне нужно создать новое окно, я просто очищаю все виджеты на экране и использую функцию сетки, чтобы разместить новые виджеты на экране. Таким образом, я могу использовать кнопки и функции с параметрами без необходимости использовать лямбда-выражение на кнопке, но я не уверен, что это самый эффективный способ сделать это, есть ли лучший способ создавать, очищать и использовать информацию о виджетах на экране в функциях?
Это конструктор класса:

Код: Выделить всё

class GUI:

def __init__(self):

#application:
self.window = tk.Tk()

#Labels:
self.screen_top_label = tk.Label(self.window)
self.client_label = tk.Label(self.window)
#....

#entries:
self.name_entry = tk.Entry(self.window)
self.email_entry = tk.Entry(self.window)
self.phone_entry = tk.Entry(self.window)
#...

(виджетов гораздо больше, но я использую это только в качестве примера)
и это будет функция, которая создает экран:
р>

Код: Выделить всё

def create_client_ui(self):

self.clear_screen()

self.window.title("Register Client")

self.screen_top_label.config(text="Enter Client Data")
self.screen_top_label.grid(row=0, column=0, sticky=tk.W, pady=5, padx=5)

self.name_label.config(text="Client Name: ")
self.name_label.grid(row=1, column=0, sticky=tk.W, pady=5, padx=5)

self.name_entry.grid(row=1,column=1, sticky=tk.W, pady=5, padx=5)

self.email_label.config(text="Client email: ")
self.email_label.grid(row=2, column=0, sticky=tk.W, pady=5, padx=5)

self.email_entry.grid(row=2, column=1, sticky=tk.W, pady=5, padx=5)

self.phone_label.config(text="Client Phone: ")
self.phone_label.grid(row=3, column=0, sticky=tk.W, pady=5, padx=5)

self.phone_entry.grid(row=3, column=1, sticky=tk.W, pady=5, padx=5)

self.main_action_button.config(text="Register Client", command=self.send_item)
self.main_action_button.grid(row=4, column=0, sticky=tk.W, pady=10, padx=10)

self.back_button.grid(row=0, column=2, sticky=tk.W, pady=10, padx=10)

Это оптимально или мне стоит попробовать другой метод?

Подробнее здесь: https://stackoverflow.com/questions/784 ... -gui-class

Вернуться в «Python»