Код: Выделить всё
import customtkinter
class MainWindow(customtkinter.CTk):
def __init__(self):
super().__init__()
my_button = customtkinter.CTkButton(self, text='Popup Window')
my_button.grid(row=0, column=0)
my_button.bind('', lambda x: self.show_popup())
self.bind_all("", lambda event: self.set_focus(event))
def set_focus(self, event):
if not isinstance(event.widget, str):
event.widget.focus_set()
def show_popup(self):
popup_window = customtkinter.CTkToplevel(self)
popup_window.focus_set()
if __name__ == "__main__":
app = MainWindow()
app.mainloop()
Для дополнительного контекста используется .bind_all(), поскольку в противном случае customtkinter не будет фокусироваться на объектах, по которым щелкают мышью. Кроме того, вариантом использования этого может быть попытка реализовать всплывающее окно, которое закрывалось бы при возврате в главное окно.
До сих пор я пытался отключить дочернюю метку внутри CTkButtons, которая Я создаю экземпляр, но это, похоже, не лишает метки возможности фокусироваться.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -set-focus
Мобильная версия