Создание Python/GTK CheckMenuItem при нажатии, не закрывает меню

Используя Python и PyGTK у меня есть GtkMenu с различным GtkCheckMenuItems в нем. Когда пользователь нажимает один из флажков завершения меню. Я хотел бы за пользователя смочь проверить серию флажков без меню, закрывающего каждый раз.

Я посмотрел на использование активировать обратного вызова для показа меню, но это, кажется, не работает. Какие-либо предложения?

6
задан Matt Joiner 28 January 2010 в 03:34
поделиться

2 ответа

R не имеет встроенного средства для обработки переменных меток. Лично я думаю, что это недостаток, который надо исправить. Hmisc действительно предоставляет некоторое средство для обработки переменных меток, но метки распознаются только функциями в этом пакете. read.dta создает data.frame с атрибутом "var.labels", который содержит информацию о маркировке. Затем можно создать словарь данных.

> data(swiss)
> write.dta(swiss,swissfile <- tempfile())
> a <- read.dta(swissfile)
> 
> var.labels <- attr(a,"var.labels")
> 
> data.key <- data.frame(var.name=names(a),var.labels)
> data.key
          var.name       var.labels
1        Fertility        Fertility
2      Agriculture      Agriculture
3      Examination      Examination
4        Education        Education
5         Catholic         Catholic
6 Infant_Mortality Infant.Mortality

Конечно, этот файл .dta имеет не очень интересные метки, но ваш должен быть более значимым.

-121--2333929-

Ваша проблема вполне стандартна на местах.

Во-первых,

необходимо откалибровать камеру. Это можно сделать в автономном режиме (что значительно упрощает жизнь ) или в оперативном режиме посредством самокалибровки.

Откалибруйте его в автономном режиме - пожалуйста.

Во-вторых,

После получения калибровочной матрицы камеры K определите проекционную матрицу камеры в последовательной сцене (необходимо использовать параллакс, как упомянуто другими). Это подробно описано в руководстве по OpenCV .

Вы должны будете использовать информацию GPS, чтобы найти относительную ориентацию между камерами в последовательных сценах (что может быть проблематично из-за шума, присущего большинству блоков GPS), то есть R и t , упомянутых в учебном пособии, или вращение и перемещение между двумя камерами.

Как только вы решите все это, вы получите две проекционные матрицы - представления камер на этих последовательных сценах. Используя одну из этих так называемых матриц камеры, можно "проецировать" точку 3D M на сцене на 2D изображение камеры на координату пикселя m (как в учебном пособии).

Мы используем это для триангуляции реальной точки 3D из точек 2D найденных в вашем видео.

В-третьих,

используйте детектор процентных точек для отслеживания той же точки в вашем видео, которая лежит на интересующем объекте. Существует несколько доступных детекторов, я рекомендую SURF , так как у вас есть OpenCV, который также имеет несколько других детекторов, как Ши-Томази углов , Харрис , и т.д. .

В-четвертых,

после отслеживания точек объекта в последовательности и получения соответствующих координат 2D пикселей необходимо триангулировать для наиболее подходящей точки 3D с учетом матрицы проекции и точек 2D. Triangulation

Вышеприведенное изображение хорошо фиксирует неопределенность и то, как вычисляется наиболее подходящая точка 3D. Конечно, в вашем случае камеры, вероятно, друг перед другом!

Наконец,

После получения точек 3D на объекте можно легко вычислить евклидово расстояние между центром камеры (которое в большинстве случаев является началом координат) и точкой.

Примечание

Это, очевидно, не легко вещи, но это не так уж и трудно.Я рекомендую превосходную книгу Хартли и Зиссермана Multiple View Geometry , в которой все вышесказанное подробно описано с кодом MATLAB для загрузки.

Развлекайтесь и продолжайте задавать вопросы!

-121--1008139-

Я вижу проблему здесь, «активировать» сигнал не позволяет вернуть логическое значение относительно того, хотите ли вы, чтобы сигнал распространялся дальше. Звучит так, будто вам может понадобиться ткнуть вокруг внутренних устройств gtk.StartMireItem , запустить сигнал, который «снова открывает» меню в текущей позиции, подлежащей обработке, сразу после того, как сигнал «активировать» закрыл меню, или попробовать список рассылки .

Вероятно, стоит отметить, что это скорее вопрос GTK +, чем вопрос PyGTK, поскольку я полагаю, что API PyGTK тесно отражает вопрос GTK +.

2
ответ дан 17 December 2019 в 22:13
поделиться

Попробуйте копаться в источнике и документацию. Я нашел это самым простым способом и лучшим ярлыком.

-1
ответ дан 17 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: