Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12619[/thread]

Tk bind und Buttongröße

Leser: 5


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
DerHenning
 2008-10-12 01:00
#115392 #115392
User since
2008-10-12
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo liebe Community,

mich beschäftigen derzeit zwei Probleme:

1. Ich möchte gerne Buttons erstellen, die 1 Pixel x 1 Pixel groß sind.

Code (perl): (dl )
$mw->Button(-width=>"1p", -height=>"1p")->pack();


Leider wird 1p nicht akzeptiert. Wie bekomme ich so kleine Buttons hin?


2. Ich hätte gerne die Tastatureingabe aller Zahlen für mein Hauptfenster ($mw) abgefangen.

Code (perl): (dl )
foreach my $z (0..9){$mw->bind("<$z>", sub{print "$z\n";});}


Das klappt prima für alle Zahlen von 6-0, jedoch nicht für alle von 1-5.
a) Warum ist das so?
b) Wie gelingt das trotzdem?


Gruß, DerHenning
Beginne jeden Tag, als wäre es Absicht.
styx-cc
 2008-10-12 04:02
#115397 #115397
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Die Zahlen von 0-9 kannst du so an $mw binden:
Code (perl): (dl )
 perl -MTk -e '$mw = tkinit; foreach my $z (0..9) { $mw->bind("<Key-$z>", sub{ print "$z\n"; }); } MainLoop;'


Beim Button kannst du mal mit -padx und -pady rumspielen, wobei ich ihn damit nur schmaler bekommen habe.

Mfg

edit: nette übersicht: http://www.en8848.com.cn/Reilly%20Books/perl3/tk/c...
Pörl.
#Kein Kommentar
 2008-10-12 14:50
#115414 #115414
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
dies hier ist wohl der kleinste button den du herstellen kannst:

Code: (dl )
$mw->Button(-width=>"1", -height=>"1", -font => [-size => 1])->pack();


er ist aber auch nicht ganz 1x1 pixel groß... aber was willst du überhaupt mit so kleinen buttons? die sieht dann sowieso keiner mehr, gescheige denn, dass sie jemand anklickt..

zu b) 1-5 funktioniert nicht, weil das die bind-tags für die maus buttons sind
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
styx-cc
 2008-10-12 15:12
#115416 #115416
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Ein stück kleiner gehts noch:
Code (perl): (dl )
$mw->Button(-width=> 1, -height=> 1, -font => [-size => 1], -padx => 0, -pady => 0)->pack();
Pörl.
#Kein Kommentar
 2008-10-12 16:27
#115422 #115422
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
noch kleiner =) aber eben mit place..

Code: (dl )
$mw->Button(-bg => 'red',)->place(-x => 2, -y => 2, -height => 1, -width => 1);


aber man muss den button schon rot färben, dass man ihn überhaupt sieht
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
DerHenning
 2008-10-13 12:00
#115448 #115448
User since
2008-10-12
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
Vielen Dank für eure tollen Vorschläge.
Das war im Wesentlichen genau das, was ich suchte.

Weil die Frage nach den kleinen Buttons aufkam:
Ich wollte ein Feld mit 255x255 kleinen (1Pixel)-Buttons erstellen, um einen Farbwähler zu basteln. Mit den Knöpfen hätte ich einen Farbverlauf nachgebildet und jeder Klick auf das Feld hätte mir den Farbwert des jeweils getroffenen Buttons zurück geliefert. Es wäre dabei also egal gewesen, ob man einen einzelnen Button erkennen kann.

Ich weiß, dass es elegantere Möglichkeiten für das Problem gibt, es war halt ein Versuch. Inzwischen habe ich meinen Farbverlauf mit (1x1) Frames nachgebildet. Sieht cool aus, ist aber total langsam. Schon bei einem 50x50 Feld warte ich gefühlt eine halbe Minute für die Erstellung.

Gruß,
DerHenning
Beginne jeden Tag, als wäre es Absicht.
topeg
 2008-10-13 14:25
#115453 #115453
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Erstelle doch ein Bild mit dem Farbverlauf (BMP oder ähnliches unkomprimiertes). Pack das in ein Frame und frag die Mausposition im Frame ab wenn geklickt wird. Dann pick dir den Farbwert aus dem Bild an der Stelle.

Ich habe das zwar noch nicht mit TK gemacht aber mit GTK2 ist es recht einfach.
#Kein Kommentar
 2008-10-13 20:32
#115473 #115473
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
was hast du gegen Tk::chooseColor? das ist sogar der native farbdialog von dem system
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
DerHenning
 2008-10-21 14:07
#115671 #115671
User since
2008-10-12
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
#Kein Kommentar+2008-10-13 18:32:12--
was hast du gegen Tk::chooseColor? das ist sogar der native farbdialog von dem system


Ich habe überhaupt nichts dagegen, im Gegenteil: Ich liebe es.
Mir ging es aber nicht darum, einen Farbwähler in eine Anwendung zu integrieren, sondern einen Farbwähler nachzuahmen. Und genau das sollte mit Buttons passieren.

topeg+2008-10-13 12:25:41--
Erstelle doch ein Bild mit dem Farbverlauf (BMP oder ähnliches unkomprimiertes). Pack das in ein Frame und frag die Mausposition im Frame ab wenn geklickt wird. Dann pick dir den Farbwert aus dem Bild an der Stelle.

Ich habe das zwar noch nicht mit TK gemacht aber mit GTK2 ist es recht einfach.


Das war mein zweiter Ansatz, allerdings wollte ich nicht ein Bild erstellen, dass ich dann abtaste, sondern viele kleine Elemente, in diesem Fall Frames, die einen Farbverlauf darstellen. Leider dauert der Aufbau des Fenster auf diese Weise ewig.

Vielleicht fallen mir ja bei Gelegenheit noch andere Wege ein, die ich dann ausprobieren werde. :-)
Beginne jeden Tag, als wäre es Absicht.
MatthiasW
 2008-10-21 16:01
#115674 #115674
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Wieso willst du es unbedingt mit vielen kleinen Elementen realisieren?
Was spricht gegen ein Bild, das du dir bsw. auch im Skript erstellen kannst wenn du keine extra Bilddatei mit dir rumschleppen willst?

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2008-10-12 01:00.