Итак, я работал над приложением, используя «customtkinter», и хотел знать, можно ли создать многооконное приложение?
когда я искал об этом, единственным методом, который я нашел, было «окно верхнего уровня», но проблема в том, что я не хочу создавать новое окно, мне нужно несколько видов «слоев», думаю, вы могли бы сказать в приложении, как я хочу все должно быть на экране, например, нет нового окна - скажем, приложение, поэтому я хочу, чтобы окно входа в систему появлялось при запуске после входа в систему или регистрации. Я не хочу, чтобы открывалось новое окно. Я хочу, чтобы содержимое приложения отображалось в том же окне. как и любое обычное приложение в настоящее время на мобильных устройствах или ПК, возможно ли это в пользовательском tkinter на Python или нет?? если это не так, может кто-нибудь подсказать, какой язык или программное обеспечение мне следует использовать для этого. Я искал реакцию и узел, реакцию на родную среду, а также студию Android и т. д., которую мне следует использовать, если это невозможно в Python.






Это можно сделать. Ниже приведен пример программы, содержащей три пользовательских окна tkinter. Первый имеет поле для ввода имени. Второе окно имеет поле для ввода адреса. и кнопка. после ввода имени и адреса при нажатии кнопки имя и адрес отобразятся в третьем окне.
Отредактировано: я отредактировал комментарий ОП в этом посте. Пожалуйста, поймите, что мой ответ - только дать представление о ваших требованиях. Расширьте это своей собственной идеей для дальнейших требований. Если вам вообще нужно какое-то конкретное решение, укажите это в самом вопросе.
import customtkinter as ct
def getdata(e):
got_name = name_entry.get()
got_address = address_entry.get()
if got_name == '': name_entry.focus_force()
elif got_address == '':address_entry.focus_force()
else:
first_line.configure(text = got_name)
second_line.configure(text = got_address)
root = ct.CTk()
root.geometry('400x300+100+100')
name = ct.CTkLabel(root, text = 'Name')
name.pack()
name_entry = ct.CTkEntry(root)
name_entry.pack()
window = ct.CTk()
window.geometry('400x300+500+0')
address =ct.CTkLabel(window, text='Address')
address.pack()
address_entry = ct.CTkEntry(window)
address_entry.pack()
name_entry.bind('<Leave>',getdata)
address_entry.bind('<Leave>', getdata)
wnd= ct.CTk()
wnd.geometry('400x300+900+0')
first_line = ct.CTkLabel(wnd,text='')
first_line.pack()
second_line = ct.CTkLabel(wnd,text='')
second_line.pack()
root.mainloop()
Я хотел спросить, в приведенном выше коде нет кнопки для получения данных, введенных в виджет ввода «Имя»?
я не знаю, мой ли это компьютер или что-то еще, но код работает точно так же, все еще нет выбора, кроме виджета ввода имени, что мне делать после ввода имени в виджете, я больше ничего не вижу ??
Чтобы создать приложение с несколькими страницами/слоями, у вас есть два способа решить эту проблему:
# Destroying every widget
for widget in win.winfo_children():
widget.destroy()
# Creating new widgets
label = CTkLabel(win, text = "I'm on a new page")
label.pack()
show() и hide() для каждого класса. Каждый раз, когда вы хотите сменить страницу, вы вызываете метод hide() каждой страницы и метод show() страницы, которую хотите показать. Например:from customtkinter import *
win = CTk()
win.geometry("300x300")
def hide_all():
""" Hides all the pages """
page1.hide()
page2.hide()
def show_page1():
page1.show()
def show_page2():
page2.show()
class Page1:
def __init__(self):
self.label1 = CTkLabel(win, text = "I'm on the first page")
self.button1 = CTkButton(win, text = "Change to the second page", command=show_page2)
def show(self):
hide_all()
self.label1.pack()
self.button1.pack()
def hide(self):
self.label1.pack_forget()
self.button1.pack_forget()
class Page2:
def __init__(self):
self.label1 = CTkLabel(win, text = "I'm on the second page")
self.button1 = CTkButton(win, text = "Change to the first page", command=show_page1)
def show(self):
hide_all()
self.label1.pack()
self.button1.pack()
def hide(self):
self.label1.pack_forget()
self.button1.pack_forget()
page1 = Page1()
page2 = Page2()
page1.show()
win.mainloop()
Надеюсь, я вам помог, хорошего дня
На самом деле я знал первый метод, однако второй для меня новый и кажется более подходящим для моего проекта. Спасибо, братан, ОЧЕНЬ ЦЕНЮ, ЧТО ВЫ НАШЛИ ВРЕМЯ НА СОЗДАНИЕ ПРОЕКТА, А ТАКЖЕ ОТВЕТ НА МОЙ ВОПРОС, СПАСИБО !!!
Нет проблем :D, получайте удовольствие от программирования
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.