Проблема с кнопками customtkinter, использующими функции обратного вызова, устанавливающие фокус.Python

Программы на Python
Ответить
Anonymous
 Проблема с кнопками customtkinter, использующими функции обратного вызова, устанавливающие фокус.

Сообщение Anonymous »

Я относительно новичок в использовании customtkinter, хотя в прошлом работал с некоторыми другими инструментами разработки графического интерфейса, но я заметил одну вещь: кажется, что иногда и только иногда при нажатии CtkButton с функцией обратного вызова, которая создает всплывающее окно и вызывает popup.focus_set(), дочерний элемент '!label' CtkButton возьмет фокус из всплывающего окна, как только всплывающее окно появится. Пример кода может выглядеть так:

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

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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