Рубрики
Без рубрики

WXPYPHON: Как получить выбранные ячейки в сетке

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Сегодня мы будем смотреть на то, как получить выбранные ячейки из объекта Wxpython Grid. Большую часть времени, получение раздела легко, но когда пользователь выбирает больше, чем одна ячейка, получение выбора становится все сложнее. Нам нужно будет создать определенный пример код, чтобы показать, как все это подходит вместе. Давайте начнем!

Выбор клеток сетки

Есть интересная статья в сети, которая охватывает эту тему. Вы можете прочитать это здесь Отказ Тем не менее, есть несколько проблем со статьей, на которой мы будем смотреть. Вот код, на который мы рассмотрим:

Давайте займем несколько моментов, чтобы сломать это. Прежде всего, мы создаем объект сетки, который мы называем Self.mygrid Отказ Мы связываем с двумя определенными событиями сетки, EVT_GRID_SELECT_CELL и EVT_GRID_RANGE_SELECT. Это для демонстрационных целей, поскольку вам обычно не нужно связываться с EVT_GRID_SELECT_CELL. Для события отбора одного ячейки мы называем OnsingleSelect обработчик. В нем мы используем объект события для захвата правильной строки и столбца. Если вы посмотрите на статью, связанную выше, вы заметите, что они используют GetGridCursror и GetGridCursorcol. Я обнаружил, что они возвращают только ранее Выбранная ячейка, а не ячейка, которая в данный момент выбрана. Это причина, по которой мы используем вместо этого методы объекта события. Также обратите внимание, что мы обновляем стоимость self.crrouteSelectedCell равным тому, что в настоящее время выбранная ячейка есть.

Другое событие сетки связано с OnDaragselication Отказ В этом обработке событий мы называем сетку GetSelectionBlocktopleft () Метод и проверьте, чтобы убедиться, что он что-то возвращает. Если это не так, то мы ничего не делаем. Но если он что-то вернет, то мы захватываем его содержимое, а также содержимое, возвращенное из GetSelectionBlockbottomright (). Тогда мы передаем их нашим printSelectedCells метод. Этот код основан на ранее упомянутой статье, хотя она была немного упрощена, когда я обнаружил, что цикл оригинала бросил ошибку. В основном все этот метод создает два списка значений с использованием функции диапазона Python. Затем он расширяет список использования вложенного списка. Наконец он печатает клетки, которые были выбраны для Stdout.

Последний метод посмотреть, – это обработчик событий кнопки: Ongetselection Отказ Этот метод вызывает сетку GetSelecedCells () метод. Это вернет выбранные ячейки, которые один щелчнул. Это также будет работать, если пользователь перетащит некоторые ячейки. Если пользователь просто выбирает одну клетку, то мы будем печатать self.crrouteSelectedCell Как всегда будет равна ценностью текущего выбора.

Упаковка

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

Связанное чтение