Schrift
[thread]4839[/thread]

Mausrad an Textwidget binden: Wie heißt der Modifier?

Leser: 1


<< >> 8 Einträge, 1 Seite
Crian
 2004-12-16 12:47
#42680 #42680
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Mit

Code: (dl )
1
2
3
4
5
6
    $mw->bind('<Up>',            sub { $Config{text_widget}->yviewScroll(-1, 'units') } );
   $mw->bind('<Down>',          sub { $Config{text_widget}->yviewScroll( 1, 'units') } );
   $mw->bind('<Alt-Up>',        sub { $Config{text_widget}->yviewScroll(-3, 'units') } );
   $mw->bind('<Alt-Down>',      sub { $Config{text_widget}->yviewScroll( 3, 'units') } );
   $mw->bind('<Control-Prior>', sub { $Config{text_widget}->yviewScroll(-1, 'pages') } );
   $mw->bind('<Control-Next>',  sub { $Config{text_widget}->yviewScroll( 1, 'pages') } );


Kann ich in meinem Textwidget auf bestimmte Weise herumscrollen. Die Belegung von Alt-Up und Alt-Down würd ich (auch) gern auf das Mausrad legen, aber ich weiß nicht, wie der entsprechende Modifier heißt. In perldoc Tk::bind steht dazu nichts. Button-4 und Button-5 hab ich schon ohne Erfolg ausprobiert.

Hat das schonmal jemand gemacht, ptk vielleicht? =)

Edit: Mir ist klar, dass ich hier eigentlich nicht ans Text-Widget binde, sondern an das Main-Widget, aber das Programm besteht fast nur aus dem Text-Widget und dies ist so beabsichtigt.\n\n

<!--EDIT|Crian|1103194203-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2004-12-16 13:06
#42681 #42681
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau mal unter http://www.oreilly.de/catalog/mastperltk/chapter/ . Da steht was von "MouseWheel"

Und aus Tk.pod:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Tk;

# Experimental mousewheel support. This should really be part of Tk.
# XXX <MouseWheel> support for Windows is untested.
BEGIN {
if ($Tk::VERSION < 804) {
local $^W = 0;
require Tk::Listbox;
my $orig_tk_listbox_classinit = \&Tk::Listbox::ClassInit;
*Tk::Listbox::ClassInit = sub {
my($class,$mw)=@_;
$orig_tk_listbox_classinit->(@_);
$mw->bind($class, "<4>", ['yview', 'scroll', -5, 'units']);
$mw->bind($class, "<5>", ['yview', 'scroll', +5, 'units']);
$mw->bind($class, '<MouseWheel>',
[ sub { $_[0]->yview('scroll',-($_[1]/120)*3,'units') }, Tk::Ev("D")]);
};
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2004-12-16 14:17
#42682 #42682
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
sub BindMouseWheel {
my ($w) = @_;
if ($^O eq "MSWin32")
{
$w->bind('<MouseWheel>' => [ sub { $_[0]->yview('scroll', -($_[1]/120)*3, 'units') }, Ev('D') ] );
}
else
{
# Support for mousewheels on Linux commonly comes through
# mapping the wheel to buttons 4 and 5. If you have a
# mousewheel ensure that the mouse protocol is set to
# "IMPS/2" in your /etc/X11/XF86Config (or XF86Config-4)
# file:
# Select "InputDevice"
# Identifier "Mouse0"
# Driver "mouse"
# Option "Device" "/dev/mouse"
# Option "Protocol" "IMPS/2"
# Option "Emulate3Buttons" "off"
# Option "ZAxisMapping" "4 5"
# EndSection
$w->bind('<4>', => sub {
$_[0]->yview('scroll', -3, 'units') unless $Tk::strictMotif;
});
$w->bind('<5>' => sub {
$_[0]->yview('scroll', +3, 'units') unless $Tk::strictMotif;
});
}
}
Crian
 2004-12-16 14:31
#42683 #42683
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Aha, also 'MouseWheel' =)
Danke

Wofür steht das D in Ev('D')? Das wird bei mir in perldoc Tk::bind nicht erklärt (bzw. taucht da nicht auf).


Wie auch immer, es funktioniert jetzt jedenfalls.

Code: (dl )
    $mw->bind('<MouseWheel>',    [ sub { $Config{text_widget}->yviewScroll(-($_[1]/120)*3, 'units') }, Ev('D') ] );
\n\n

<!--EDIT|Crian|1103202273-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ptk
 2004-12-16 14:43
#42684 #42684
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich glaube, D steht fuer delta. Im Zweifel in der Tcl/Tk-Doku nachlesen, das duerfte unter "man n bind" als %D dokumentiert sein.
Strat
 2004-12-16 19:11
#42685 #42685
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, steht fuer delta value... MouseWheel event
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2004-12-17 01:44
#42686 #42686
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ja, hab ich inzwischen auch schon gefunden unter Renee's Link. Da müsste mal die perldoc Tk::bind aktualisiert werden ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ptk
 2004-12-17 11:25
#42687 #42687
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei Perl/Tk muesste 'ne ganze Menge aktualisiert werden :-\ Mal sehen, vielleicht habe ich zwischen den Jahren etwas Zeit...
<< >> 8 Einträge, 1 Seite



View all threads created 2004-12-16 12:47.