Есть ли способ отключить все виджеты в tk-окне с одним проком? Аргумент может быть только начальным путём.Как отключить все виджеты в tk?
ответ
С учетом виджета вы можете получить всех детей этого виджета с помощью [winfo children]. С помощью крошечной рекурсивной процедуры вы можете воздействовать на каждый виджет в дереве виджетов. Если вы хотите быть ленивым, вы также можете получить список всех виджетов, выполнив команды [info commands. *]. Это часто бывает достаточно хорошо, если ваше приложение не создает процедуры или изображения с именем, которое начинается с «.».
Большинство виджетов tk принимают параметр «-state», а те, которые этого не делают, обычно игнорируются, поскольку состояние не имеет значения (например, виджет кадра). Таким образом, вы можете перебирать все виджеты и делать что-то вроде [catch {$ widget configure -state disabled}]. Это не будет работать, если у вас есть необычные виджеты, которые необходимо активировать или отключить с помощью других средств (например, кнопка ttk с подкомандой «состояние»).
Если у вас есть простое приложение, используя стандартные виджеты, что-то подобное может быть достаточно хорошо:
proc disable_all {path} {
catch {$path configure -state disabled}
foreach child [winfo children $path] {
disable_all $child
}
}
Для точного контроля вы можете использовать «[winfo класса $ виджета]», чтобы получить класс виджета , и выполнять разные команды в зависимости от класса.
- 1. Chaining Tk :: BrowseEntry виджеты вместе
- 2. не может удалить tk-виджеты
- 3. Как отключить все виджеты внутри панели или внутри Composite?
- 4. Perl Tk обновить (перерисовать) виджеты в суб (в потоке)
- 5. Скрыть окно в Perl/Tk и показать снова вкл. все виджеты
- 6. Как отключить виджеты панели инструментов Wordpress?
- 7. отключить кнопки в Python и Tk
- 8. Как подключить все дочерние виджеты в tkinter
- 9. Как перебирать все виджеты в окне?
- 10. Как очистить все виджеты в родительских виджетах?
- 11. (Android) Как отключить все кнопки/CheckBoxes/Другие виджеты внутри ScrollView, но не отключить прокрутку
- 12. Кадр для ноутбука tk не изменяется правильно, когда добавляются виджеты
- 13. Виджеты Toplevel в Tkinter
- 14. Когда нет подключения к Интернету отключить виджеты
- 15. Как отключить закрытие окна Perl/Tk ('X') в Windows
- 16. Как отключить выбор текста в программе Python/Tk?
- 17. получить все виджеты внутри элемента
- 18. Рекурсивно отключить дочерние виджеты событий колесика мыши
- 19. Tabify все виджеты док-станции
- 20. Как удалить все виджеты из QStackedWidget?
- 21. Петля через все «виджеты»/элементы в действии
- 22. Android: включить/отключить виджеты приложений программно
- 23. Почему все виджеты в javascript используют div?
- 24. Как динамически отключить день в гибком календаре (виджеты w3)?
- 25. Tk frame: как отключить внутренний обработчик для раскрытия событий?
- 26. Разместите виджеты в рамки?
- 27. Checkbutton in perl Tk выбирает все опции
- 28. Tcl Tk показать все доступные ссылки
- 29. Как удалить все элементы в одной команде для Tk TreeCtrl
- 30. Как отключить все кнопки
в tcl recursion proc можно сохранить предыдущее состояние виджета? Поэтому в следующий раз я могу включить только те, которые отключены. – OliveOne
Я думал использовать ргос walkIntoTKTree {W} { \t набор глубины 0 \t в то время как {$ глубина <[llength [winfo детей $ ш]]} { \t \t \t walkIntoTKTree [LINDEX [winfo детей $ W] $ глубина] \t \t \t incr глубина; \t} \t puts "w = $ w" } но ур солн лучше – OliveOne