необходимо сформировать различные классы для выполнения tkinter

#python #tkinter

#питон #tkinter

Вопрос:

Я пишу программное обеспечение, общая работа была выполнена полностью, но весь код был выполнен в одном классе, изначально определение метода было нормальным, поскольку они увеличивают, что имена сбивают с толку . так что нужна была помощь

первоначальный импорт

 from tkinter import * from ttkthemes import themed_tk as tk  

определенный класс

 class Main_page:  """Main Window this is configuration that exist when opens"""   def __init__(self, window):  self.window = window  self.window.geometry("1366x768 0 0")  self.window.title("Admin Page")  self.window.config(bg="gray")   """Creating window in full screen"""  self.window.attributes("-fullscreen", True)  self.window.bind('lt;Escapegt;', lambda event: self.window.attributes("-fullscreen", False))  self.window.bind('lt;F11gt;', lambda event: self.window.attributes("-fullscreen", True))   self.top_fra()  self.lef_fra()  self.body_fra()   def top_fra(self):  """This is top Frame in exist on all pages"""  top_frame = Frame(self.window, height=70, width=1340)  top_frame.place(x=10, y=10)   def lef_fra(self):  """This is side frame where the main handling buttons are placed  as billing, transaction details , settings"""  lef_frame = Frame(self.window, height=610, width=125, borderwidth=0)  lef_frame.place(x=10, y=85)   # Billing Button for left side  billing = Button(lef_frame, text="Billing", width=10, height=5, bg="gray", command=self.billing_page)  billing.place(x=25, y=20)   # manage Button for left side  manage = Button(lef_frame, text="Bill n Manage", width=10, height=5, bg="gray", command=self.bill_manage)  manage.place(x=25, y=140)   def body_fra(self):  """This is body frame where the initial info handles"""  self.body_frame = Frame(self.window, width=1210, height=610, bg="white")  self.body_frame.place(x=140, y=85)  

теперь два обязательных класса определены следующим образом методы и каждый раз, когда метод destroy должен вызываться для бесперебойного запуска программы

 def billing_page(self):  """when billing button is selected , the initial view of the page is opened"""  self.body_frame.destroy()   self.body_frame = Frame(self.window, width=1210, height=610, bg="White")  self.body_frame.place(x=140, y=85)   def bill_manage(self):  """this is bills managing page where we get  all the bills details hear"""   """this is placed because when repeatedly called the billing page or   bill manager page the frames become more and we see some lags in execution"""  self.body_frame.destroy()   self.body_frame = Frame(self.window, width=1210, height=610, bg="blue")  self.body_frame.place(x=140, y=85)   def win():  """initial initialization the page to view"""  window = tk.ThemedTk()  window.get_themes()  window.set_theme("black")  Main_page(window)  window.mainloop()   if __name__ == "__main__":  win()  

можем ли мы преобразовать метод billing_page и метод bill_manage в отдельные классы и можем ли мы работать над ними дальше

Комментарии:

1. может быть, вам следует скрыть ( place_forget() ) и отобразить (снова place() ) объект вместо destroy того, чтобы снова и create снова.

2. но когда мы снова нажмем «Выставление счетов», кажется, что это снова создаст новое окно.

3. ему нужно сначала создать все кадры — один для billing_page и один для bill_manage — а позже использовать только place_forget() для скрытия одного кадра и place отображения другого. Этот метод очень полезен, потому что, если вы помещаете какое-то значение в один кадр, вы можете получить его после скрытия (вы можете получить его после уничтожения), и когда вы снова показываете кадр, вы снова видите те же значения.

Ответ №1:

Да, вы можете наследовать класс Main_page в новом классе, например

 Class NewOne(Main_page): def __init__(self):  pass  def billing_page(self):  # your code     

Комментарии:

1. billing_page() missing 1 required positional argument: 'self' получение этой ошибки