Модераторы: ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GUI WxWidgets 
:(
    Опции темы
DaemonSuw
Дата 24.10.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Добрый день подскажите пожалуйста может кто из присутствующих работал с Wx... мне нужно сделать на нем таблицу для вывода данных (модуль WX::Grid)

Вся загвоздка в 
Цитата

my $event_grid = Wx::GridEvent->new(-1, wxEVT_GRID_CELL_LEFT_DCLICK, $grid);
    EVT_GRID_CELL_LEFT_DCLICK
    (
   $grid, 
   sub 
  {
  print 'GetCol=',$event_grid->GetCol(),"\n";
  print 'GetRow=',$event_grid->GetRow(),"\n";
  } 
   );    


EVT_GRID_CELL_LEFT_DCLICK - это event по двойному клику на ячейку

Цитата

wxGridEvent::GetCol

int GetCol()

Column at which the event occurred.


не могу передать колонку и строку в event, что бы по двойному клику сделать более полный отчёт...
выводит GetCol=-1
выводит GetRow=-1

Примеров кода на wxperl в инете мало((((... есть сайтWxperl, там документация....

wxGrid
wxGridEvent


Код

use Wx qw(:everything);

package MyApp;
use strict;
use vars qw(@ISA);
@ISA = qw(Wx::App);

sub OnInit {
    my($this) = @_;
    my($frame,$grid) = MyFrame->new( undef, -1, "Image Test", [-1,-1], [800, 600]);
    $frame->CenterOnScreen;
    $frame->Show(1);
    $this->SetTopWindow($frame);
    return 1;
}

package MyFrame;
use strict;
use vars qw(@ISA);
@ISA = qw(Wx::Frame);

use Wx qw(:everything);
use Wx::Event qw(:everything);
use Wx::Grid qw(:everything);

Wx::InitAllImageHandlers();

sub new {
    my ($class) = shift;
    my ($this) = $class->SUPER::new( @_ );
    $this->{main_window} = $this;
    
    my $panel = Wx::Panel->new
                            (
                            $this,
                            -1,
                            [0, 0],
                            [800,600],
                            );
                                    
    my $menu = Wx::Menu->new();
    
   $menu->Append(1, "&Test Progress Dialog\tCtrl-T", "Display a test dialog");
   $menu->Append(2, "E&xit\tAlt-X", "Quit this program");
    
    my($menu_bar) = Wx::MenuBar->new();
   $menu_bar->Append($menu, "&Test");
   $this->SetMenuBar($menu_bar);
   
   
    my $button = Wx::Button->new
                                (
                                $panel,
                                10,
                                'button',
                                [500, 10],
                                [-1, -1],
                                );

    my $grid = Wx::Grid->new($panel, -1, [ 0 , 20 ], [ 380, 400 ]);
    $grid->CreateGrid(10,3);
    $grid->SetRowLabelSize(20);
    $grid->SetColLabelSize(20);
    $grid->SetColSize(1,200);
    $grid->EnableDragColSize(0);
    $grid->EnableDragRowSize(0);
    $grid->EnableDragGridSize(0);
    my $color_red = Wx::Colour->new(255,255,222);
    $grid->SetLabelBackgroundColour($color_red);
    $grid->SetColLabelValue(0, '№ заказа');
    $grid->SetColLabelValue(1, 'ФИО');
    $grid->SetColLabelValue(2, 'Статус');
    $grid->EnableEditing(0);
    

    my $event_grid = Wx::GridEvent->new(-1, wxEVT_GRID_CELL_LEFT_DCLICK, $grid);
    EVT_GRID_CELL_LEFT_DCLICK
    (
      $grid, 
      sub 
        {
        print 'GetCol=',$event_grid->GetCol(),"\n";
        print 'GetRow=',$event_grid->GetRow(),"\n";
        } 
      );    
    
    return ($this);
}

package main;
use Wx::Event qw(:everything);
use Wx::Grid;
my($app) = MyApp->new();
$app->MainLoop()



Это сообщение отредактировал(а) DaemonSuw - 24.10.2008, 15:55
PM MAIL ICQ   Вверх
shamber
Дата 24.10.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



я работаю с WX
попробуйте так
Код

use Wx qw(:everything);

package MyApp;
use strict;
use vars qw(@ISA);
@ISA = qw(Wx::App);

sub OnInit {
    my($this) = @_;
    my($frame,$grid) = MyFrame->new( undef, -1, "Image Test", [-1,-1], [800, 600]);
    $frame->CenterOnScreen;
    $frame->Show(1);
    $this->SetTopWindow($frame);
    return 1;
}

package MyFrame;
use strict;
use vars qw(@ISA);
@ISA = qw(Wx::Frame);

use Wx qw(:everything);
use Wx::Event qw(:everything);
use Wx::Grid qw(:everything);

Wx::InitAllImageHandlers();

sub new {
    my ($class) = shift;
    my ($this) = $class->SUPER::new( @_ );
    $this->{main_window} = $this;
    
    my $panel = Wx::Panel->new
                            (
                            $this,
                            -1,
                            [0, 0],
                            [800,600],
                            );
                                    
    my $menu = Wx::Menu->new();
    
   $menu->Append(1, "&Test Progress Dialog\tCtrl-T", "Display a test dialog");
   $menu->Append(2, "E&xit\tAlt-X", "Quit this program");
    
    my($menu_bar) = Wx::MenuBar->new();
   $menu_bar->Append($menu, "&Test");
   $this->SetMenuBar($menu_bar);
   
   
    my $button = Wx::Button->new
                                (
                                $panel,
                                10,
                                'button',
                                [500, 10],
                                [-1, -1],
                                );

    my $grid = Wx::Grid->new($panel, -1, [ 0 , 20 ], [ 380, 400 ]);
    $grid->CreateGrid(10,3);
    $grid->SetRowLabelSize(20);
    $grid->SetColLabelSize(20);
    $grid->SetColSize(1,200);
    $grid->EnableDragColSize(0);
    $grid->EnableDragRowSize(0);
    $grid->EnableDragGridSize(0);
    my $color_red = Wx::Colour->new(255,255,222);
    $grid->SetLabelBackgroundColour($color_red);
    $grid->SetColLabelValue(0, '№ заказа');
    $grid->SetColLabelValue(1, 'ФИО');
    $grid->SetColLabelValue(2, 'Статус');
    $grid->EnableEditing(0);
    
    
    EVT_GRID_CELL_LEFT_DCLICK($this, \&lmb_click);
    
    return ($this);
}

sub lmb_click{
    my $self = shift;
    my $event = shift;
     print 'GetCol=',$event->GetCol(),"\n";
        print 'GetRow=',$event->GetRow(),"\n";
}
package main;
my($app) = MyApp->new();
$app->MainLoop()


Добавлено @ 20:09
у меня выдает правильные координаты

Добавлено @ 20:15
а на ваш пример ругается
Код

Bareword "wxEVT_GRID_CELL_LEFT_DCLICK" not allowed while "strict subs" in use at C:\Perl\!My\vingrad\wx.pl line 76.


Это сообщение отредактировал(а) shamber - 27.10.2008, 12:18
PM MAIL Jabber   Вверх
DaemonSuw
  Дата 24.10.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Спасибо, большое...  smile 
а как ваши впечатление о WxPerl, 
как вам функционал? хватает? 
Все ли работает, были ли какие трудности с ним? 
есть ли у этого генератора GUI альтернативы, ну кроме старого доброго Tk (язык только Perl)? ))))

PM MAIL ICQ   Вверх
shamber
Дата 27.10.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



по пунктам
1. Пока меня Wx устраивает.
2. Вроде все что пробовал работает.
3. альтернативы есть
win32-Gui из названия понятно что это только под win.
есть еще perl-Qt им занимается vadiml
PM MAIL Jabber   Вверх
DaemonSuw
  Дата 27.10.2008, 19:26 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



shamber, вы не работали с буфером обмена в wx, а именно с модулями 
StreamBuffer 
или 
RichTextCtrl 
не могу их вообще найти в сборке WxPerl, они существуют для wxperl?
my $control = Wx::StreamBuffer->new(); и use StreamBuffer - пишет что не может найти файлы... устанавливаю модули с сайта wxperl в чем проблема? пробывал скомпилить их в ручную со спана, но не получилось это сделать под windows...
подскажите пожалуйста

Это сообщение отредактировал(а) DaemonSuw - 28.10.2008, 00:21
PM MAIL ICQ   Вверх
shamber
Дата 28.10.2008, 12:19 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



Давайте начнем с того что вы скомпилите модуль?

1. Для этого качаете mingw и устанавливаете его. после установки вам нужно добавить его в PATH.
2. Cкачиваете dmake. Разархивируете его куда нибудь и добавляете эту папку в PATH

3.Скачиваете модуль ExtUtils-FakeConfig и устанавливаете его.
во время установки когда вы делаете makefile.pl он должен вам вывести
Checking if your kit is complete...
Looks good
Writing Makefile for ExtUtils::FakeConfig
Using: 'dmake'

если вместо dmake пишет nmake значит, что он его находит в path или вы не добавили в path dmake.
Далее
Код

dmake 
dmake install

После этого добавляем PERL5OPT=-MConfig_m.
4. Скачиваете последний стабильный релиз Wxwidgets отсюда Stable выбирайте какой вариант вам удобней инсталлер или zip архив.
 Я выбрал инсталлер. После этого приступаем к компиляции модуля. 
Для этого переходим в папку 
Код

cd [path to wx]\build\msw

и вводим 
Код

mingw32-make -f makefile.gcc SHARED=1 BUILD=release UNICODE=1

если нас интересует поддержка ЮНИКОД.
далее переходим в папку
Код

cd [path to wx]\contrib\build\stc\

и вводим 
Код

mingw32-make -f makefile.gcc SHARED=1 BUILD=release UNICODE=1

После выполения этих команд мы получаем необходимые нам dll.
После этого нам нужно в PATH добавить
  WXDIR=[path to wx]
  WXWIN=[path to wx]

5. Скачивате поcледний релиз Alien-wxWidgets.
Начинаем установку.
Код

perl Build.PL --unicode

на вопрос 
Код

Do you want to build wxWidgets? [no ]

отвечаем твердо no
Код

perl build
perl build test
perl build install

6. Cкачивате поcледний релиз WX здесь.
Устанавливате и радуетесь
Код

makefile.pl

После этого makefile.pl ругнется на вас по поводу
Note (probably harmless): No library found for -lunicows
Для решения данной проблемы необходимо сходить на сайт сюда и скачать там библиотеку для mingw32.
после этого скопировать ее в  MinGW\lib\ и все.Все ошибки побеждены.
Код

dmake
dmake test
dmake install


7. После этого можете себе установить Wx-Demo в котором вы найдете пример для RichTextCtrl.

Пробуйте если будут вопросы пишите. Будем думать. smile

Это сообщение отредактировал(а) shamber - 6.4.2009, 09:39
PM MAIL Jabber   Вверх
shamber
Дата 28.10.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



И еще , по поводу WX для себя я решил что довольно удобно разделять код и визуальное сопровождение.
Поэтому есть смысл использовать механизмы xrc. 
PM MAIL Jabber   Вверх
DaemonSuw
Дата 28.10.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



 smile Спасибо за подробную инструкцию))) сейчас попробую все откомпилировать... 
Если вам не трудно можете дать более подробную информацию о "механизмы xrc", очень интересно....
PM MAIL ICQ   Вверх
KSURi
Дата 28.10.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: нет
Всего: 27





--------------------
Died at Life.pl line 21
PM Jabber   Вверх
shamber
Дата 28.10.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18




посмотрите в примерах wx-DEMO есть и работа с буффером обмена wxClipboard и XRC

Добавлено @ 16:14
Я с помощью wxGlade(визуальная среда, позволяющая создавать GUI, правда она на python) создаю GUI сохраняю его в формате xrc. а далее подгружаю его. Вообщем если не разберетесь пишите

Это сообщение отредактировал(а) shamber - 28.10.2008, 16:37
PM MAIL Jabber   Вверх
shamber
Дата 28.10.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



Маленький пример

Присоединённый файл ( Кол-во скачиваний: 23 )
Присоединённый файл  xrc.zip 2,93 Kb
PM MAIL Jabber   Вверх
KSURi
Дата 28.10.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: нет
Всего: 27



shamber, как это умерла? У меня нормально открывается.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
shamber
Дата 28.10.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



только что не работала, прошу прощения

Это сообщение отредактировал(а) shamber - 28.10.2008, 16:40
PM MAIL Jabber   Вверх
DaemonSuw
Дата 29.10.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



http://wxglade.sourceforge.net/demo/ - вот нашёл демо ролик по использованию WxGlade - классная штука... Он может генерить не только XRC, но и Perl-овский код)))))
Можете подкинуть инфу или ссылки на форумы по установки Питона и WxGlade, я так понял он на интерпретатор питона встает (от ActiveState подойдет?) 
PM MAIL ICQ   Вверх
shamber
Дата 29.10.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



DaemonSuw,  ВЫ WxPerl компильнули?

по поводу python, есть другой форум smile а так activestate подходит smile 

DaemonSuw, вот от перловского кода я и ушел, потому что при добавлении новой кнопочки, что-то может затереться, вообщем xrc имхо удобнее.
PM MAIL Jabber   Вверх
DaemonSuw
Дата 29.10.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



пытаюсь скомпилить, но возникаю ошибки... скачал последнюю версию mingw...

Цитата

Microsoft Windows XP [Version 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.

C:\ExtUtils-FakeConfig-0.12>makefile.pl
Checking if your kit is complete...
Looks good
Writing Makefile for ExtUtils::FakeConfig
Using: 'nmake'

C:\>dmake
dmake:  Error: -- `C:\Perl\libConfig.pm' not found, and can't be made


Как бороться с этим?

куда вставить PERL5OPT=-MConfig_m? - Вставил в path 
ExtUtils-FakeConfig-0.12 - компильнул nmake-ом... им можно? чем они отличаются между собой? 
При компиляции Wxwidgets много warning(((
что то пита того
Цитата

../../include/wx/clntdata.h:20: warning: type attributes are honored only at typ
e definition
../../include/wx/clntdata.h:25: warning: type attributes are honored only at typ
e definition
../../include/wx/clntdata.h:25: warning: type attributes are honored only at typ
e definition


Вообщем с ворнингами и с горем пополам остановился на пункте 5. Скачивате поcледний релиз Alien-wxWidgets. Начинаем установку.
на perl build получил следующие сообщение 
Цитата


C:\Documents and Settings\Alien-wxWidgets-0.41\Alien-wxWidg
ets-0.41>perl build
Subroutine version::qv redefined at inc/version.pm line 22.
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Set up gcc environment - 3.4.5 (mingw-vista special r3)

**********************************************************************
WARNING!

You need to set the WXDIR or WXWIN variables; refer to
docs/install.txt for a detailed explanation
**********************************************************************

 at inc/My/Build/Win32.pm line 21
        My::Build::Win32::_init() called at inc/My/Build/Win32.pm line 204
        My::Build::Win32::awx_get_package('My::Build::Win32') called at inc/My/B
uild.pm line 27
        My::Build::BEGIN() called at inc/My/Build.pm line 36
        eval {...} called at inc/My/Build.pm line 36
        require My/Build.pm called at C:\Documents and Settings\d.tihonov\Deskto
p\wx\Alien-wxWidgets-0.41\Alien-wxWidgets-0.41\_build\lib/My/Build/new_from_cont
ext_is_broken.pm line 6
        require My/Build/new_from_context_is_broken.pm called at build line 42
        main::BEGIN() called at inc/My/Build.pm line 36
        eval {...} called at inc/My/Build.pm line 36

C:\Documents and Settings\d.tihonov\Desktop\wx\Alien-wxWidgets-0.41\Alien-wxWidg
ets-0.41>cd ..

C:\Documents and Settings\d.tihonov\Desktop\wx\Alien-wxWidgets-0.41>

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;

Это сообщение отредактировал(а) DaemonSuw - 29.10.2008, 18:14
PM MAIL ICQ   Вверх
shamber
Дата 30.10.2008, 10:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18




Не совсем понятно почему вы делаете
Код

C:\ExtUtils-FakeConfig-0.12>makefile.pl
Checking if your kit is complete...
Looks good
Writing Makefile for ExtUtils::FakeConfig
Using: 'nmake'

в одной папке а 
Код

C:\>dmake
dmake:  Error: -- `C:\Perl\libConfig.pm' not found, and can't be made

в другой.

dmake  нужно делать в C:\ExtUtils-FakeConfig-0.12>
В принципе можно использовать и nmake. 
Но для того чтобы было Using: "dmake" Вам нужно убрать nmake из  папок прописанных в PATH.(Можно просто переименовать в 1nmake)
2. Вставлять нужно в переменные среды. Это делается следующим образом.
Правой кнопкой мышки на МОЙ КОМПЬЮТЕР. ДОПОЛНИТЕЛЬНО -> ПЕРЕМЕННЫЕ СРЕДЫ ->СИСТЕМНЫЕ ПЕРЕМЕННЫЕ->создать

ИМЯ PERL5OPT  ЗНАЧЕНИЕ -MConfig_m.
это для PERL5OPT=-MConfig_m;
user posted image
также и с WXDIR=C:\wx;
WXWIN=C:\wx; 
Их не нужно в PATH

3. На warning не обращаем внимания.

4. Set up gcc environment - 3.4.5 (mingw-vista special r3) это нормально


Это сообщение отредактировал(а) shamber - 30.10.2008, 10:13
PM MAIL Jabber   Вверх
DaemonSuw
Дата 30.10.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



не обращайте внимание на то что я dmake гружу из другой папки... я ошибся... хотел сделать лог удобочитаемым... - пути очень длинные...
спасибо... ситуация проясняется... буду разбираться дальше... пока работаю на том что скачал с сайта http://wxperl.sourceforge.net/download.html

1. Решил остановится на xrc, очень удобно!!! но сталкнулся с проблемами... в вашем примере у меня проблемы с кодировкой ставлю windows-1252(или 1251) - иероглифы
С моей формой тоже самое... какую кодировку выбрать UTF-8 или <?xml version="1.0" encoding="cp1251"?> тоже не помогает... хотя если wxGlade генерить не xrc проблем не возникает

2. Форма не грузится полностью, и возникают ошибки 
Цитата

12:19:19: No handler found for XML node 'object', class 'wxMenuItem'!
12:19:19: No handler found for XML node 'object', class 'wxMenuItem'!
12:19:19: No handler found for XML node 'object', class 'wxGrid'!
12:19:19: Error in resource.


почему не грузится грид например... хотя все кнопки грузятся...

Если вам не трудно посмотрите код и скажите что я делаю неправильно  smile 



Это сообщение отредактировал(а) DaemonSuw - 31.10.2008, 12:25

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  xrc.zip 1,67 Kb
PM MAIL ICQ   Вверх
shamber
Дата 31.10.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



попробуйте кодировку "CP1251", у меня после этого крякозябры пропали а появились буковки

http://wxperl.sourceforge.net/download.html отсюда WX версии 0.26, а на cpan 0.86. Это конечно ваше дело, но я бы советовал компилировать smile

Это сообщение отредактировал(а) shamber - 31.10.2008, 16:30
PM MAIL Jabber   Вверх
DaemonSuw
Дата 31.10.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



пока до компиляции к сожалению, не доходят руки(((( надо форму сделать, а охота перети на XRC, а не генерить perl код... загвоздка в кодировке
я грузил ваш пример, ничего не менял... и он тоже не работает... не знаю в чем может быть проблема smile 


Это сообщение отредактировал(а) DaemonSuw - 31.10.2008, 17:00
PM MAIL ICQ   Вверх
shamber
Дата 31.10.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



у вас модуль ppm с поддержкой UNICODE ?

Это сообщение отредактировал(а) shamber - 31.10.2008, 17:43
PM MAIL Jabber   Вверх
shamber
Дата 31.10.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



Код

12:19:19: No handler found for XML node 'object', class 'wxGrid'!

Эта проблема решается однозначно обновлением модуля. так что не спешите, потратьте 1 час для компиляции. И проблемы решаться
PM MAIL Jabber   Вверх
DaemonSuw
Дата 31.10.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



сейчас попробую)))..., тоесть 
Цитата

mingw32-make -f makefile.gcc SHARED=1 BUILD=release UNICODE=0

или так пойдет)))
Цитата

mingw32-make -f makefile.gcc SHARED=1 BUILD=release 

PM MAIL ICQ   Вверх
shamber
Дата 31.10.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



UNICODE=1
иначе крякозябры замучают

Это сообщение отредактировал(а) shamber - 31.10.2008, 19:52
PM MAIL Jabber   Вверх
DaemonSuw
Дата 1.11.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



shamber, спасибо вам огромное!!!! все заработало!!!! никаких проблем с кодировкой!!! ваш пример отлично сработал))))!!! smile 
PM MAIL ICQ   Вверх
shamber
Дата 1.11.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



DaemonSuw, ну так вы компильнули?
PM MAIL Jabber   Вверх
DaemonSuw
Дата 1.11.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



да компильнул по вашей инструкции... еще ко всему прочему стоял на компе perl 5.8.0  smile и под него не хотел компилиться wx-0.86... переставил perl 5.8.8... и все как по маслу)))) 
сейчас с wxGrid разбираюсь что то он криво отображается... а все остальное нормально...

PS прощю прощение ошибся в версии... 87-еще нету)))

Это сообщение отредактировал(а) DaemonSuw - 1.11.2008, 12:51
PM MAIL ICQ   Вверх
shamber
Дата 1.11.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



smile я в шоках
где вы нашли версию wx-0.87?
на cpan версия 0.86
user posted image

Добавлено через 7 минут и 34 секунды
c wxGrid нужно писать обработчик, для того чтобы он не криво отображался smile
PM MAIL Jabber   Вверх
DaemonSuw
Дата 1.11.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



 smile  smile ну или хоть как его писать в 2 словах


пишу
Код

    $self->{grid_1} = $self->XRC("grid_1");
    $self->{grid_1}->CreateGrid(10, 5);


Грид появляется smile , но все его настройки которые прописаны в xml-e теряются!!!! Как их заполучить?


Это сообщение отредактировал(а) DaemonSuw - 1.11.2008, 14:30
PM MAIL ICQ   Вверх
shamber
Дата 1.11.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



Цитата(DaemonSuw @  1.11.2008,  12:23 Найти цитируемый пост)
S прощю прощение ошибся в версии... 87-еще нету)))

после вашей надписи, нашел 0.87 в svn и поставил smile

посмотрите в архиве, может это-то что нужно
Я не стал там прописывать названия COl и ROW идр.....

И кстати, я не увидел настроек в xml. Приведите пример xml.

Это сообщение отредактировал(а) shamber - 1.11.2008, 14:47

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  xrc.zip 3,05 Kb
PM MAIL Jabber   Вверх
DaemonSuw
Дата 1.11.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



я так понял нельзя в  xml файле указать например название колонки!!! WxGlade не генерит названия.... в ручную это можно сделать в xml-ке, или только через обработчик?

Это сообщение отредактировал(а) DaemonSuw - 1.11.2008, 15:39
PM MAIL ICQ   Вверх
shamber
Дата 1.11.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



DaemonSuw, скорее всего через обработчик.
Хотя можете посмотреть на примеры в wxdemo. Там есть wxXrcCustom, т.е. можно самому дописать недостающий функционал.
PM MAIL Jabber   Вверх
DaemonSuw
  Дата 20.11.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Здравствуйте еще раз, сейчас работаю вплотную с Wx... - классная штука всем советую.... но возникли еще небольшие трудности... в общем надо сделать следующее:
есть грид, подвожу мышку к определенной ячейки/столбцу -> выдается подсказка... теоретически все вроде бы ясно.... событие на мыши wxMouseEvent -> EVT_MOTION($app, \&motion_event), там создаю новый фрайм, в процедуре вставляю нужный текст...
но оно не срабатывает на гриде... на панели срабатывает, а вот на гриде не хочет((((, в чем может быть проблема? возможно такое реализовать?
PM MAIL ICQ   Вверх
shamber
Дата 20.11.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



прикладывайте пример, того что вы пытаетесь сделать.
А также почитайте вот это может поможет
PM MAIL Jabber   Вверх
DaemonSuw
Дата 21.11.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Спасибо, от части прояснило ситуацию, но не решило проблему... как оказалось грид - это составной элемент и использовать не может EVT_MOTION, Вот тут написано, там также написано что надо использовать обработчик событий формы, с помощью следующего заклинания wxEvtHandler::Connect(), но я не могу вызвать и найти примеры по его использованию((((
Документация к wxEvtHandler, обратите внимание на см. строки 
Цитата

Example

  frame->Connect( wxID_EXIT,
    wxEVT_COMMAND_MENU_SELECTED,
    wxCommandEventHandler(MyFrame::OnQuit) );

wxPerl note: In wxPerl this function takes 4 arguments: id, lastid, type, method; if method is undef, the handler is disconnected

Прикладываю пример тестового скрипта  smile


Это сообщение отредактировал(а) DaemonSuw - 21.11.2008, 11:57

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  test.pl 2,86 Kb
PM MAIL ICQ   Вверх
shamber
Дата 21.11.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



DaemonSuw, волшебная строчка
Код

 EVT_MOTION($grid->GetGridWindow(),\&mouse_motion);

спасет отца русской демократии smile


ЗЫ если интересно, то
Код

The wxGrid is composed of a few different windows. You need to connect your handler to the grid window.


Это сообщение отредактировал(а) shamber - 21.11.2008, 19:33
PM MAIL Jabber   Вверх
shamber
Дата 21.11.2008, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



ЗЫЫ а если вдруг захочется использовать Connect то делается это следующим образом
Код

WXWINDOWS->Connect(ID,wxID_ANY,wxEVT_MOTION,\&dummy);

WXWINDOWS указатель на окно которое получает событие, в нашем случае это окно $grid->GetGridWindow()
далее мы указываем диапазон id окон, которые должны реагировать на это событие.
ID - это id окна, в нашем случае $grid->GetGridWindow()->GetId()
wxID_ANY все окна.
wxEVT_MOTION это какое событие
dummy - метод
PM MAIL Jabber   Вверх
DaemonSuw
Дата 24.11.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Спасибо!!! первое лекарство помогло!!! не хотело GetGridWindows работать, но это по моей вине))))). Очень странно - я не нашел ни строчки в документации к wx про GetGridWindows, (http://docs.wxwidgets.org/stable/), как будто нету такой функции(((( у грида((( 
PM MAIL ICQ   Вверх
shamber
Дата 25.11.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



DaemonSuw,GetGridWindow - не документированный метод
PM MAIL Jabber   Вверх
DaemonSuw
Дата 5.12.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



shamber, доброе время суток... подскажите пожалуйста мне на счет WxHtmlWindow, может вы с ним работали - нужен для отчетов в html-e
Не грузится окно в тестовом скрипте 
Код

use Wx::HTML;
my $frame_html_report = Wx::HtmlWindow->new(undef, -1);
  my $load_status = $frame_html_report->LoadFile("C:/debt_to_freelancers.html");
  print "No good" if !$load_status;
  $frame_html_report->Show(1);


в переменную $load_status -> передается 1, и далее пытаюсь грузить как обычное окно $frame_html_report->Show(1), но ничего не происходит((((, ошибок тоже не возникает, тоже самое и с тестовым модулем lib/Wx/DemoModules/wxHtmlWindow.pm... в чем баг?

Это сообщение отредактировал(а) DaemonSuw - 5.12.2008, 14:00
PM MAIL ICQ   Вверх
shamber
Дата 5.12.2008, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



HtmlWindow это не самостоятельное окно, насколько я понял
поэтому, просто передайте ему указатель на родительское окно и код у Вас заработает.

Код

$this->{frame_html_report} = Wx::HtmlWindow->new($this,-1,[0,0],[400,600],);
    my $load_status = $this->{frame_html_report}->LoadFile("c:/Cell_style_definition.htm");
    print "No good" if !$load_status;


У меня прекрасно отработало.

Это сообщение отредактировал(а) shamber - 5.12.2008, 15:37
PM MAIL Jabber   Вверх
DaemonSuw
Дата 22.12.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Здравствуйте... еще раз))) 
возникла следующая проблема... не могу найти wxWidget - WxTipWindows; как будто он не реализован для перла... вы его не использовали никогда?... google не помогает(((
PM MAIL ICQ   Вверх
shamber
Дата 23.12.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



Вы WxDemo видели? 
WxTipDialog не устраивает?
PM MAIL Jabber   Вверх
DaemonSuw
Дата 25.12.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 11.3.2008

Репутация: нет
Всего: 3



Видел.. но не подходит((( к сожалению.. так как надо что бы при наведении на какой либо объект выводилась инфа и скрывалась через какое то время... сейчас реализовани через wxMiniFrame но он не устраивает... тем что он не всегда исчезает и остается иногда на экране.... и не убирается через таймаут, но я думаю - это не трудно реализовать с помощью таймера... Просто нету какого нибудь готового решения? без лишних телодвижений))))
PM MAIL ICQ   Вверх
Gain
  Дата 13.10.2010, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.10.2010

Репутация: нет
Всего: нет



Всем привет  smile
использую WxPerl
Как в ячейку поля вставить выбор даты?
        Например, для дробных чисел редактор существует:
   
Код

        my $grid0 = Wx::Grid->new($nb0, -1, [10, 10], [800, 600]);
        $grid0->CreateGrid(1, 12);
        my $attr = Wx::GridCellAttr->new;
        $attr->SetEditor( Wx::GridCellFloatEditor->new(-1,0) ); 
        $grid0->SetColAttr(7, $attr); # устанавливаем для каждой ячейки 7 столбца
   

        По идее должно быть что-то типа Wx::GridCellDatatEditor.
        И существует ли другой метод (не через атрибут) выставлять для всей колонки renderer или editor?
        Что-то типа $grid0->SetColFormatNumber(col), только как это заставить работать, я так и не понял...


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  main.pl 6,99 Kb
PM MAIL   Вверх
OutlawZ
Дата 3.12.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Можете кое что объяснить, дело в том что я устанавливал с CPAN модуль Wx все нормально встало, дома устанавливал Wx через ppm не установилось, но когда я написал ppm install Wx::Demo он установил все нужные модули и пакет заработал, как такое может быть?????


--------------------
user posted image
user posted image
PM MAIL   Вверх
shamber
Дата 3.12.2011, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: нет
Всего: 18



Цитата(OutlawZ @  3.12.2011,  14:06 Найти цитируемый пост)
дома устанавливал Wx через ppm не установилос

проблемы с  интернет?
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: GUI | Следующая тема »


 




[ Время генерации скрипта: 0.3158 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.