Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: GUI > GUI WxWidgets |
Автор: DaemonSuw 24.10.2008, 15:49 | ||||||
Добрый день подскажите пожалуйста может кто из присутствующих работал с Wx... мне нужно сделать на нем таблицу для вывода данных (модуль WX::Grid) Вся загвоздка в
EVT_GRID_CELL_LEFT_DCLICK - это event по двойному клику на ячейку
не могу передать колонку и строку в event, что бы по двойному клику сделать более полный отчёт... выводит GetCol=-1 выводит GetRow=-1 Примеров кода на wxperl в инете мало((((... есть сайтhttp://docs.wxwidgets.org/stable/, там документация.... http://docs.wxwidgets.org/stable/wx_wxgrid.html#wxgrid http://docs.wxwidgets.org/stable/wx_wxgridevent.html#wxgrideventgetcol
|
Автор: shamber 24.10.2008, 20:09 | ||||
я работаю с WX попробуйте так
Добавлено @ 20:09 у меня выдает правильные координаты Добавлено @ 20:15 а на ваш пример ругается
|
Автор: DaemonSuw 24.10.2008, 22:27 |
Спасибо, большое... ![]() а как ваши впечатление о WxPerl, как вам функционал? хватает? Все ли работает, были ли какие трудности с ним? есть ли у этого генератора GUI альтернативы, ну кроме старого доброго Tk (язык только Perl)? )))) |
Автор: shamber 27.10.2008, 09:20 |
по пунктам 1. Пока меня Wx устраивает. 2. Вроде все что пробовал работает. 3. альтернативы есть win32-Gui из названия понятно что это только под win. есть еще perl-Qt им занимается vadiml |
Автор: DaemonSuw 27.10.2008, 19:26 |
shamber, вы не работали с буфером обмена в wx, а именно с модулями http://docs.wxwidgets.org/2.8.4/wx_wxstreambuffer.html#wxstreambuffer или http://docs.wxwidgets.org/2.8.4/wx_wxrichtextctrl.html#wxrichtextctrl не могу их вообще найти в сборке WxPerl, они существуют для wxperl? my $control = Wx::StreamBuffer->new(); и use StreamBuffer - пишет что не может найти файлы... устанавливаю модули с сайта http://wxperl.sourceforge.net/download.html в чем проблема? пробывал скомпилить их в ручную со спана, но не получилось это сделать под windows... подскажите пожалуйста |
Автор: shamber 28.10.2008, 12:19 | ||||||||||||||||||||
Давайте начнем с того что вы скомпилите модуль? 1. Для этого качаете http://www.mingw.org и устанавливаете его. после установки вам нужно добавить его в PATH. 2. Cкачиваете http://search.cpan.org/dist/dmake/. Разархивируете его куда нибудь и добавляете эту папку в PATH 3.Скачиваете модуль http://search.cpan.org/dist/ExtUtils-FakeConfig/ и устанавливаете его. во время установки когда вы делаете makefile.pl он должен вам вывести Checking if your kit is complete... Looks good Writing Makefile for ExtUtils::FakeConfig Using: 'dmake' если вместо dmake пишет nmake значит, что он его находит в path или вы не добавили в path dmake. Далее
После этого добавляем PERL5OPT=-MConfig_m. 4. Скачиваете последний стабильный релиз Wxwidgets отсюда http://www.wxwidgets.org/downloads/#latest_stable выбирайте какой вариант вам удобней инсталлер или zip архив. Я выбрал инсталлер. После этого приступаем к компиляции модуля. Для этого переходим в папку
и вводим
если нас интересует поддержка ЮНИКОД. далее переходим в папку
и вводим
После выполения этих команд мы получаем необходимые нам dll. После этого нам нужно в PATH добавить WXDIR=[path to wx] WXWIN=[path to wx] 5. Скачивате поcледний релиз http://search.cpan.org/dist/Alien-wxWidgets/. Начинаем установку.
на вопрос
отвечаем твердо no
6. Cкачивате поcледний релиз WX http://search.cpan.org/dist/Wx/. Устанавливате и радуетесь
После этого makefile.pl ругнется на вас по поводу Note (probably harmless): No library found for -lunicows Для решения данной проблемы необходимо сходить на сайт http://myt.ag/URLWeb.aspx?email=steve%40fooworks.com&url=http%3a%2f%2flibunicows.sourceforge.net%2f&sn= и скачать там библиотеку для mingw32. после этого скопировать ее в MinGW\lib\ и все.Все ошибки побеждены.
7. После этого можете себе установить http://search.cpan.org/dist/Wx-Demo/ в котором вы найдете пример для RichTextCtrl. Пробуйте если будут вопросы пишите. Будем думать. ![]() |
Автор: shamber 28.10.2008, 14:13 |
И еще , по поводу WX для себя я решил что довольно удобно разделять код и визуальное сопровождение. Поэтому есть смысл использовать механизмы xrc. |
Автор: DaemonSuw 28.10.2008, 15:12 |
![]() Если вам не трудно можете дать более подробную информацию о "механизмы xrc", очень интересно.... |
Автор: KSURi 28.10.2008, 15:17 |
http://www.pc.uz/publish/doc/text10969 |
Автор: shamber 28.10.2008, 16:09 |
посмотрите в примерах wx-DEMO есть и работа с буффером обмена wxClipboard и XRC Добавлено @ 16:14 Я с помощью wxGlade(визуальная среда, позволяющая создавать GUI, правда она на python) создаю GUI сохраняю его в формате xrc. а далее подгружаю его. Вообщем если не разберетесь пишите |
Автор: shamber 28.10.2008, 16:35 |
Маленький пример |
Автор: KSURi 28.10.2008, 16:36 |
shamber, как это умерла? У меня нормально открывается. |
Автор: shamber 28.10.2008, 16:38 |
только что не работала, прошу прощения |
Автор: DaemonSuw 29.10.2008, 11:16 |
http://wxglade.sourceforge.net/demo/ - вот нашёл демо ролик по использованию WxGlade - классная штука... Он может генерить не только XRC, но и Perl-овский код))))) Можете подкинуть инфу или ссылки на форумы по установки Питона и WxGlade, я так понял он на интерпретатор питона встает (от ActiveState подойдет?) |
Автор: shamber 29.10.2008, 12:09 |
DaemonSuw, ВЫ WxPerl компильнули? по поводу python, есть другой форум ![]() ![]() DaemonSuw, вот от перловского кода я и ушел, потому что при добавлении новой кнопочки, что-то может затереться, вообщем xrc имхо удобнее. |
Автор: DaemonSuw 29.10.2008, 15:26 | ||||||
пытаюсь скомпилить, но возникаю ошибки... скачал последнюю версию mingw...
Как бороться с этим? куда вставить PERL5OPT=-MConfig_m? - Вставил в path ExtUtils-FakeConfig-0.12 - компильнул nmake-ом... им можно? чем они отличаются между собой? При компиляции Wxwidgets много warning((( что то пита того
Вообщем с ворнингами и с горем пополам остановился на пункте 5. Скачивате поcледний релиз Alien-wxWidgets. Начинаем установку. на perl build получил следующие сообщение
WXDIR or WXWIN - не пропивались! Set up gcc environment - 3.4.5 (mingw-vista special r3) - не пойму версия что ли не та? я поставил 5-ую PATH = C:\Perl\site\bin;C:\Perl\bin;C:\Python25\;C:\perl58\bin\;C:\Perl\bin\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\dmake;C:\MinGW\bin;WXDIR=C:\wx;WXWIN=C:\wx; |
Автор: shamber 30.10.2008, 10:05 | ||||
Не совсем понятно почему вы делаете
в одной папке а
в другой. dmake нужно делать в C:\ExtUtils-FakeConfig-0.12> В принципе можно использовать и nmake. Но для того чтобы было Using: "dmake" Вам нужно убрать nmake из папок прописанных в PATH.(Можно просто переименовать в 1nmake) 2. Вставлять нужно в переменные среды. Это делается следующим образом. Правой кнопкой мышки на МОЙ КОМПЬЮТЕР. ДОПОЛНИТЕЛЬНО -> ПЕРЕМЕННЫЕ СРЕДЫ ->СИСТЕМНЫЕ ПЕРЕМЕННЫЕ->создать ИМЯ PERL5OPT ЗНАЧЕНИЕ -MConfig_m. это для PERL5OPT=-MConfig_m; ![]() также и с WXDIR=C:\wx; WXWIN=C:\wx; Их не нужно в PATH 3. На warning не обращаем внимания. 4. Set up gcc environment - 3.4.5 (mingw-vista special r3) это нормально |
Автор: DaemonSuw 30.10.2008, 20:15 | ||
не обращайте внимание на то что я dmake гружу из другой папки... я ошибся... хотел сделать лог удобочитаемым... - пути очень длинные... спасибо... ситуация проясняется... буду разбираться дальше... пока работаю на том что скачал с сайта http://wxperl.sourceforge.net/download.html 1. Решил остановится на xrc, очень удобно!!! но сталкнулся с проблемами... в вашем примере у меня проблемы с кодировкой ставлю windows-1252(или 1251) - иероглифы С моей формой тоже самое... какую кодировку выбрать UTF-8 или <?xml version="1.0" encoding="cp1251"?> тоже не помогает... хотя если wxGlade генерить не xrc проблем не возникает 2. Форма не грузится полностью, и возникают ошибки
почему не грузится грид например... хотя все кнопки грузятся... Если вам не трудно посмотрите код и скажите что я делаю неправильно ![]() |
Автор: shamber 31.10.2008, 16:29 |
попробуйте кодировку "CP1251", у меня после этого крякозябры пропали а появились буковки http://wxperl.sourceforge.net/download.html отсюда WX версии 0.26, а на cpan 0.86. Это конечно ваше дело, но я бы советовал компилировать ![]() |
Автор: DaemonSuw 31.10.2008, 16:34 |
пока до компиляции к сожалению, не доходят руки(((( надо форму сделать, а охота перети на XRC, а не генерить perl код... загвоздка в кодировке я грузил ваш пример, ничего не менял... и он тоже не работает... не знаю в чем может быть проблема ![]() |
Автор: shamber 31.10.2008, 17:17 |
у вас модуль ppm с поддержкой UNICODE ? |
Автор: shamber 31.10.2008, 17:48 | ||
Эта проблема решается однозначно обновлением модуля. так что не спешите, потратьте 1 час для компиляции. И проблемы решаться |
Автор: DaemonSuw 31.10.2008, 18:11 | ||||
сейчас попробую)))..., тоесть
или так пойдет)))
|
Автор: shamber 31.10.2008, 18:18 |
UNICODE=1 иначе крякозябры замучают |
Автор: DaemonSuw 1.11.2008, 11:58 |
shamber, спасибо вам огромное!!!! все заработало!!!! никаких проблем с кодировкой!!! ваш пример отлично сработал))))!!! ![]() |
Автор: shamber 1.11.2008, 11:59 |
DaemonSuw, ну так вы компильнули? |
Автор: DaemonSuw 1.11.2008, 12:23 |
да компильнул по вашей инструкции... еще ко всему прочему стоял на компе perl 5.8.0 ![]() сейчас с wxGrid разбираюсь что то он криво отображается... а все остальное нормально... PS прощю прощение ошибся в версии... 87-еще нету))) |
Автор: shamber 1.11.2008, 12:36 |
![]() где вы нашли версию wx-0.87? на cpan версия 0.86 ![]() Добавлено через 7 минут и 34 секунды c wxGrid нужно писать обработчик, для того чтобы он не криво отображался ![]() |
Автор: DaemonSuw 1.11.2008, 13:00 | ||
![]() ![]() пишу
Грид появляется ![]() |
Автор: shamber 1.11.2008, 14:39 |
после вашей надписи, нашел 0.87 в svn и поставил ![]() посмотрите в архиве, может это-то что нужно Я не стал там прописывать названия COl и ROW идр..... И кстати, я не увидел настроек в xml. Приведите пример xml. |
Автор: DaemonSuw 1.11.2008, 15:27 |
я так понял нельзя в xml файле указать например название колонки!!! WxGlade не генерит названия.... в ручную это можно сделать в xml-ке, или только через обработчик? |
Автор: shamber 1.11.2008, 15:33 |
DaemonSuw, скорее всего через обработчик. Хотя можете посмотреть на примеры в wxdemo. Там есть wxXrcCustom, т.е. можно самому дописать недостающий функционал. |
Автор: DaemonSuw 20.11.2008, 15:20 |
Здравствуйте еще раз, сейчас работаю вплотную с Wx... - классная штука всем советую.... но возникли еще небольшие трудности... в общем надо сделать следующее: есть грид, подвожу мышку к определенной ячейки/столбцу -> выдается подсказка... теоретически все вроде бы ясно.... событие на мыши wxMouseEvent -> EVT_MOTION($app, \&motion_event), там создаю новый фрайм, в процедуре вставляю нужный текст... но оно не срабатывает на гриде... на панели срабатывает, а вот на гриде не хочет((((, в чем может быть проблема? возможно такое реализовать? |
Автор: shamber 20.11.2008, 16:05 |
прикладывайте пример, того что вы пытаетесь сделать. А также почитайте вот http://wiki.wxpython.org/wxGrid%20ToolTips может поможет |
Автор: DaemonSuw 21.11.2008, 11:56 | ||
Спасибо, от части прояснило ситуацию, но не решило проблему... как оказалось грид - это составной элемент и использовать не может EVT_MOTION, http://lists.wxwidgets.org/pipermail/wx-users/2004-December/070183.html, там также написано что надо использовать обработчик событий формы, с помощью следующего заклинания wxEvtHandler::Connect(), но я не могу вызвать и найти примеры по его использованию(((( Документация к http://docs.wxwidgets.org/stable/wx_wxevthandler.html#wxevthandlerconnect, обратите внимание на см. строки
Прикладываю пример тестового скрипта ![]() |
Автор: shamber 21.11.2008, 19:30 | ||||
DaemonSuw, волшебная строчка
спасет отца русской демократии ![]() ЗЫ если интересно, то
|
Автор: shamber 21.11.2008, 20:03 | ||
ЗЫЫ а если вдруг захочется использовать Connect то делается это следующим образом
WXWINDOWS указатель на окно которое получает событие, в нашем случае это окно $grid->GetGridWindow() далее мы указываем диапазон id окон, которые должны реагировать на это событие. ID - это id окна, в нашем случае $grid->GetGridWindow()->GetId() wxID_ANY все окна. wxEVT_MOTION это какое событие dummy - метод |
Автор: DaemonSuw 24.11.2008, 19:57 |
Спасибо!!! первое лекарство помогло!!! не хотело GetGridWindows работать, но это по моей вине))))). Очень странно - я не нашел ни строчки в документации к wx про GetGridWindows, (http://docs.wxwidgets.org/stable/), как будто нету такой функции(((( у грида((( |
Автор: shamber 25.11.2008, 09:52 |
DaemonSuw,GetGridWindow - не документированный метод |
Автор: DaemonSuw 5.12.2008, 13:59 | ||
shamber, доброе время суток... подскажите пожалуйста мне на счет http://docs.wxwidgets.org/stable/wx_wxhtmlwindow.html#wxhtmlwindow, может вы с ним работали - нужен для отчетов в html-e Не грузится окно в тестовом скрипте
в переменную $load_status -> передается 1, и далее пытаюсь грузить как обычное окно $frame_html_report->Show(1), но ничего не происходит((((, ошибок тоже не возникает, тоже самое и с тестовым модулем lib/Wx/DemoModules/wxHtmlWindow.pm... в чем баг? |
Автор: shamber 5.12.2008, 15:35 | ||
HtmlWindow это не самостоятельное окно, насколько я понял поэтому, просто передайте ему указатель на родительское окно и код у Вас заработает.
У меня прекрасно отработало. |
Автор: DaemonSuw 22.12.2008, 14:10 |
Здравствуйте... еще раз))) возникла следующая проблема... не могу найти wxWidget - WxTipWindows; как будто он не реализован для перла... вы его не использовали никогда?... google не помогает((( |
Автор: shamber 23.12.2008, 10:22 |
Вы WxDemo видели? WxTipDialog не устраивает? |
Автор: DaemonSuw 25.12.2008, 19:12 |
Видел.. но не подходит((( к сожалению.. так как надо что бы при наведении на какой либо объект выводилась инфа и скрывалась через какое то время... сейчас реализовани через wxMiniFrame но он не устраивает... тем что он не всегда исчезает и остается иногда на экране.... и не убирается через таймаут, но я думаю - это не трудно реализовать с помощью таймера... Просто нету какого нибудь готового решения? без лишних телодвижений)))) |
Автор: Gain 13.10.2010, 16:19 | ||
Всем привет ![]() использую WxPerl Как в ячейку поля вставить выбор даты? Например, для дробных чисел редактор существует:
По идее должно быть что-то типа Wx::GridCellDatatEditor. И существует ли другой метод (не через атрибут) выставлять для всей колонки renderer или editor? Что-то типа $grid0->SetColFormatNumber(col), только как это заставить работать, я так и не понял... |
Автор: OutlawZ 3.12.2011, 14:06 |
Можете кое что объяснить, дело в том что я устанавливал с CPAN модуль Wx все нормально встало, дома устанавливал Wx через ppm не установилось, но когда я написал ppm install Wx::Demo он установил все нужные модули и пакет заработал, как такое может быть????? |
Автор: shamber 3.12.2011, 22:08 |
проблемы с интернет? |