Seite 1 von 1

Tkinter Cursors ( Mauszeiger)

Verfasst: Samstag 5. August 2006, 08:43
von pyStyler
Hallo,
ich habe mal die Tkinter Mauszeiger zusammengefasst. :D

Code: Alles auswählen

#! /usr/bin/python
from Tkinter import *
hp=Tk()
button= [
	Button(hp, text='X_crusor', cursor='X_cursor'),
	Button(hp, text='based_arrow_down', cursor='based_arrow_down'),
	Button(hp, text='based_arrow_up', cursor='based_arrow_up'),
	Button(hp, text='boat', cursor='boat'),
	Button(hp, text='bogosity', cursor='bogosity'),
	Button(hp, text='bottom_left_corner', cursor='bottom_left_corner'),
	Button(hp, text='bottom_right_corner', cursor='bottom_right_corner'),
	Button(hp, text='bottom_side', cursor='bottom_side'),
	Button(hp, text='bottom_tee', cursor='bottom_tee'),
	Button(hp, text='box_spiral', cursor='box_spiral'),
	Button(hp, text='center_ptr', cursor='center_ptr'),	
	Button(hp, text='circle', cursor='circle'),
	Button(hp, text='clock', cursor='clock'), 	
	Button(hp, text='coffee_mug', cursor='coffee_mug'),
	Button(hp, text='cross', cursor='cross'),	
	Button(hp, text='dot', cursor='dot'),	
	Button(hp, text='dotbox', cursor='dotbox'),	
	Button(hp, text='double_arrow', cursor='double_arrow'),
	Button(hp, text='draft_larg', cursor='draft_large'),	
	Button(hp, text='draft_small', cursor='draft_small'),
	Button(hp, text='draped_box', cursor='draped_box'),	
	Button(hp, text='exchange', cursor='exchange'),
	Button(hp, text='fleur', cursor='fleur'),
	Button(hp, text='gobbler', cursor='gobbler'),
	Button(hp, text='gumby', cursor='gumby'),
	Button(hp, text='hand1', cursor='hand1'),
	Button(hp, text='hand2', cursor='hand2'),	
	Button(hp, text='heart', cursor='heart'),
	Button(hp, text='icon', cursor='icon'),	
	Button(hp, text='iron_corss', cursor='iron_cross'),
	Button(hp, text='left_ptr', cursor='left_ptr'),
	Button(hp, text='left_side', cursor='left_side'),
	Button(hp, text='left_tee', cursor='left_tee'),
	Button(hp, text='leftbutton', cursor='leftbutton'),
	Button(hp, text='ll_angle', cursor='ll_angle'),
	Button(hp, text='lr_angle', cursor='lr_angle'),
	Button(hp, text='man', cursor='man'),
	Button(hp, text='middlebutton', cursor='middlebutton'),
	Button(hp, text='mouse', cursor='mouse'),
	Button(hp, text='pencil', cursor='pencil'),
	Button(hp, text='pirate', cursor='pirate'),
	Button(hp, text='plus', cursor='plus'),
	Button(hp, text='question_arrow', cursor='question_arrow'),
	Button(hp, text='right_prt', cursor='right_ptr'),	
	Button(hp, text='right_side', cursor='right_side'),
	Button(hp, text='right_tee', cursor='right_tee'),
	Button(hp, text='rightbutton', cursor='rightbutton'),
	Button(hp, text='rtl_logo', cursor='rtl_logo'),
	Button(hp, text='sailboat', cursor='sailboat'),
	Button(hp, text='sb_down_arrow', cursor='sb_down_arrow'),
	Button(hp, text='sb_v_double_arrow', cursor='sb_v_double_arrow'),
	Button(hp, text='sb_h_double_arrow', cursor='sb_h_double_arrow'),
	Button(hp, text='sb_left_arrow', cursor='sb_left_arrow'),
	Button(hp, text='sb_right_arrow', cursor='sb_right_arrow'),
	Button(hp, text='shuttle', cursor='shuttle'),
	Button(hp, text='sizing', cursor='sizing'),
	Button(hp, text='sb_up_arrow', cursor='sb_up_arrow'),
	Button(hp, text='spider', cursor='spider'),
	Button(hp, text='spraycan', cursor='spraycan'),
	Button(hp, text='star', cursor='star'),
	Button(hp, text='target', cursor='target'),
	Button(hp, text='tcross', cursor='tcross'),
	Button(hp, text='top_left_arrow', cursor='top_left_arrow'),
	Button(hp, text='top_left_corner', cursor='top_left_corner'),
	Button(hp, text='top_right_corner', cursor='top_right_corner'),
	Button(hp, text='top_side', cursor='top_side'),
	Button(hp, text='top_tee', cursor='top_tee'),
	Button(hp, text='trek', cursor='trek'),
	Button(hp, text='ul_angle', cursor='ul_angle'),
	Button(hp, text='watch', cursor='watch'),
	Button(hp, text='xterm', cursor='xterm'),
	]
	
ro =1
co =0
for x in button:
	x.grid(row=ro, column=co,
	padx=2, pady=2,
	ipady=10, ipadx=10,sticky=EW)
	co +=1
	if co % 5==0:
		co =0
		ro +=1
			
hp.mainloop()
Wie man die Mauszeiger in seinem Programm einbauen kann, kann man leicht dem Codestück oben entnehmen.


Gruss
pyStyler :)

Verfasst: Dienstag 12. September 2006, 18:54
von schlangenbeschwörer
hi pyStyler!
Das is ja mal cool! Sind das echt alle? -Ich hab auch so ne liste, die is aber wesentlich kürzer. naja...ich find's toll!
Ach, nur so: Wie lang hast du dafür gebraucht?
Gruß jj :lol:

Verfasst: Dienstag 12. September 2006, 19:29
von pyStyler
hi,
schlangenbeschwörer hat geschrieben: hi pyStyler!
Das is ja mal cool!
danke
schlangenbeschwörer hat geschrieben: Sind das echt alle?
das ist alles was ich hab abschreiben können. 8)
schlangenbeschwörer hat geschrieben: Ich hab auch so ne liste, die is aber wesentlich kürzer.
sind denn die in deiner Liste aufgeführten Cursors auch in den obigen Script dabei?
schlangenbeschwörer hat geschrieben: Ach, nur so: Wie lang hast du dafür gebraucht?
haha sehr witzig. :D
So gute 20 min sinds bestimmt gewesen

Gruss
pyStyler
:)

Verfasst: Dienstag 12. September 2006, 19:50
von mitsuhiko
Wie wäre es mit einem Eintrag ins [wiki=Tipps und Tricks]Wiki[/wiki]?

Verfasst: Dienstag 12. September 2006, 20:04
von pyStyler
hi,
blackbird hat geschrieben:Wie wäre es mit einem Eintrag ins [wiki=Tipps und Tricks]Wiki[/wiki]?
sorry für mein Unwissen was wiki angeht, aber unter welcher Unterrubrik
soll ich das Script eintragen ?

Ansonsten kannst du gerne den Eintrag für mich machen bitte. :D

Gruss
pyStyler

Verfasst: Dienstag 12. September 2006, 20:59
von Leonidas
Man könnte das Skript sicher mit einer for-Schleife und einer Liste kürzer lösen, daher würde ich es erst kürzen und dann Wikifizieren. Ich könnte es schon kürzen, nur testen müsste es jemand anders, da ich kein Tkinter habe und es auch nciht installieren werde/kann.

Verfasst: Dienstag 12. September 2006, 21:06
von pyStyler
Hi,
Leonidas hat geschrieben:Man könnte das Skript sicher mit einer for-Schleife und einer Liste kürzer lösen, daher würde ich es erst kürzen und dann Wikifizieren. Ich könnte es schon kürzen, nur testen müsste es jemand anders, da ich kein Tkinter habe und es auch nciht installieren werde/kann.
kein Tkinter Installiert? :shock:
Nagut dann sorge du dafür das es gekuerzt wird und ich werde es dann testen.
Und den Eintrag machst du dann ?

Verfasst: Dienstag 12. September 2006, 21:15
von Leonidas
pyStyler hat geschrieben:kein Tkinter Installiert? :shock:
Nein. So bleibe ich von der mittelalterlichen Tk-Bibliothek verschont.

Verfasst: Dienstag 12. September 2006, 21:34
von Leonidas
Gut, ich habe meinen Codedegenerator laufen lassen und raus kam dann das:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import Tkinter as tk

cursors = [
    'X_cursor', 'based_arrow_down', 'based_arrow_up', 'boat',
    'bogosity', 'bottom_left_corner', 'bottom_right_corner',
    'bottom_side', 'bottom_tee', 'box_spiral', 'center_ptr',
    'circle', 'clock','coffee_mug', 'cross', 'dot','dotbox'
    'double_arrow', 'draft_large','draft_small', 'draped_box',
    'exchange', 'fleur', 'gobbler', 'gumby', 'hand1', 'hand2',
    'heart', 'icon', 'iron_cross', 'left_ptr', 'left_side',
    'left_tee', 'leftbutton', 'll_angle', 'lr_angle',
    'man', 'middlebutton', 'mouse', 'pencil', 'pirate',
    'plus', 'question_arrow', 'right_ptr', 'right_side',
    'right_tee', 'rightbutton', 'rtl_logo', 'sailboat',
    'sb_down_arrow', 'sb_v_double_arrow',
    'sb_h_double_arrow', 'sb_left_arrow',
    'sb_right_arrow', 'shuttle', 'sizing',
    'sb_up_arrow', 'spider', 'spraycan', 'star', 'target',
    'tcross', 'top_left_arrow',
    'top_left_corner', 'top_right_corner',
    'top_side', 'top_tee', 'trek', 'ul_angle', 'watch',
    'xterm'
]

def main():
    root = Tk()
    buttons = []
    for cursor in cursors:
        btn = tk.Button(root, text=cursor, cursor=cursor)
        buttons.append(btn)
    
    row = 1
    column = 0
    for widget in buttons:
        widget.grid(row=row, column=column, padx=2, pady=2, 
            ipady=10, ipadx=10,sticky=tk.EW)
        column += 1
        if column % 5 == 0:
            column = 0
            row += 1
    
    root.mainloop()

if __name__ == '__main__':
    main()
Nebenbei hat dies jetzt auch eine universelle Shebang, eine Encoding-Angabe, eine separate Anzeige-Funktion, einen Import-Hook und verständlichere Variablennamen. Sollte auch PEP8 konform sein.

Den Code testen darf jemand, der Tkinter installiert hat, testen. Der Wikieintrag sollte zumindest den Tag Codesnippets tragen, damit er auch wieder aufgefunden werden kann.

Verfasst: Dienstag 12. September 2006, 21:55
von mawe
Hi!

Ich hab mal ein paar kleinere Fehler in Leonida's Code ausgebessert, main gekürzt und die Buttons durch Labels ersetzt (platzsparender ;)).

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import Tkinter as tk

cursors = [
    'X_cursor', 'based_arrow_down', 'based_arrow_up', 'boat',
    'bogosity', 'bottom_left_corner', 'bottom_right_corner',
    'bottom_side', 'bottom_tee', 'box_spiral', 'center_ptr',
    'circle', 'clock','coffee_mug', 'cross', 'dot','dotbox',
    'double_arrow', 'draft_large','draft_small', 'draped_box',
    'exchange', 'fleur', 'gobbler', 'gumby', 'hand1', 'hand2',
    'heart', 'icon', 'iron_cross', 'left_ptr', 'left_side',
    'left_tee', 'leftbutton', 'll_angle', 'lr_angle',
    'man', 'middlebutton', 'mouse', 'pencil', 'pirate',
    'plus', 'question_arrow', 'right_ptr', 'right_side',
    'right_tee', 'rightbutton', 'rtl_logo', 'sailboat',
    'sb_down_arrow', 'sb_v_double_arrow',
    'sb_h_double_arrow', 'sb_left_arrow',
    'sb_right_arrow', 'shuttle', 'sizing',
    'sb_up_arrow', 'spider', 'spraycan', 'star', 'target',
    'tcross', 'top_left_arrow',
    'top_left_corner', 'top_right_corner',
    'top_side', 'top_tee', 'trek', 'ul_angle', 'watch',
    'xterm'
]

def main():
    root = tk.Tk()
    root.title("Tk cursors")
    row = 1
    column = 0
    for cursor in cursors:
        tk.Label(
            root, text=cursor, cursor=cursor, relief="groove"
            ).grid(row=row, column=column, ipadx=5, ipady=5, sticky=tk.EW)
        column += 1
        if column % 5 == 0:
            column = 0
            row += 1

    root.mainloop()

if __name__ == '__main__':
    main()
Gruß, mawe

Verfasst: Mittwoch 13. September 2006, 12:33
von CM
Hoi, o.T.:
Leonidas hat geschrieben:Gut, ich habe meinen Codedegenerator laufen lassen und raus kam dann das:
Du hast einen Codegenerator für Python? Ist der irgendwo öffentlich und dokumentiert? (Würde nämlich gerne mal ein paar ausprobieren.)
Gruß,
Christian

Verfasst: Mittwoch 13. September 2006, 13:34
von Leonidas
CM hat geschrieben:
Leonidas hat geschrieben:Gut, ich habe meinen Codedegenerator laufen lassen und raus kam dann das:
Du hast einen Codegenerator für Python?
Nein, einen Codedegenerator: es degeneriert aus viel Code wenig Code. Aber es war eingentlich ein Witz, der Codedegenerator war ich selbst ;)

Verfasst: Mittwoch 13. September 2006, 15:02
von CM
Hmpf :oops: wer lesen kann ...

Verfasst: Mittwoch 13. September 2006, 16:26
von BlackJack
Leonidas hat geschrieben:Nein, einen Codedegenerator: es degeneriert aus viel Code wenig Code. Aber es war eingentlich ein Witz, der Codedegenerator war ich selbst ;)
Das beantwortet noch nicht die zweite Frage. Also: Bist Du irgendwo öffentlich und dokumentiert? ;-)

Verfasst: Mittwoch 13. September 2006, 17:18
von schlangenbeschwörer
pyStyler hat geschrieben: sind denn die in deiner Liste aufgeführten Cursors auch in den obigen Script dabei?
Hi!
Ich hab noch ne andere liste gefunden, an die ich zunächst nicht gedacht hatte, und die is ähnlich lang, aber ein paar waren nicht drin, dafür 4 andere, die oben noch nicht erwähnt sind (glaub ich jedenfalls):

Code: Alles auswählen

['cross_reverse','crosshair','diamond_cross','umbrella']
Gruß jj

Verfasst: Mittwoch 13. September 2006, 22:21
von mawe
Hi!

Soweit ich es verstanden habe, werden die Cursor in der Datei cursorfont.h definiert. Warum also nicht diese Datei befragen? ;) (sie befindet sich bei Ubuntu in /usr/include/X11/. Bei anderen Linux-Distis weiss ich's nicht. Bei Windows ... ach wen interessierts :P):

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import Tkinter as tk


def main():
    f = file("/usr/include/X11/cursorfont.h", "r")
    root = tk.Tk()
    root.title("Tk cursors")
    row = 1
    column = 0
    for line in f:
        if line.startswith("#") and not "glyphs" in line:
            cursor = line.split()[1].replace("XC_", "")
            tk.Label(
                root, text=cursor, cursor=cursor, relief="groove"
                ).grid(row=row, column=column, ipadx=5, ipady=5, sticky=tk.EW)
            column += 1
            if column % 5 == 0:
                column = 0
                row += 1

    root.mainloop()

if __name__ == '__main__':
    main()
Gruß, mawe

Verfasst: Donnerstag 14. September 2006, 14:54
von Leonidas
mawe hat geschrieben:Soweit ich es verstanden habe, werden die Cursor in der Datei cursorfont.h definiert. Warum also nicht diese Datei befragen? ;) (sie befindet sich bei Ubuntu in /usr/include/X11/.
Dort befindet sie sich aber nur wenn man das Paket libx11-dev installiert, das ist ein Wermutstropfen dieser Lösung. Für Gentoo ist das kein Problem, aber unter Debian-basierten Systemen habe ich meist wenige -dev Pakete installiert.

Verfasst: Donnerstag 14. September 2006, 17:35
von pyStyler
mawe hat geschrieben: sie befindet sich bei Ubuntu in /usr/include/X11/
komisch bei mir nicht !
/usr/include/X11/bitmaps :roll:

Re: Tkinter Cursors ( Mauszeiger)

Verfasst: Montag 11. Januar 2021, 15:20
von calm
Hi,

den wichtigsten haste aber vergessen oder hab ich ihn irgendwo übersehen?

Code: Alles auswählen

Button(hp, text='none', cursor='none'),
:wink:

Danke für die Mühe…

Re: Tkinter Cursors ( Mauszeiger)

Verfasst: Montag 11. Januar 2021, 16:22
von __blackjack__
@calm: 2006 war noch Tk/Tcl 8.3/8.4 aktuell, da gab es "none" laut Dokumentation nur für Mac OS X. Erst mit 8.5 steht das in der Liste der allgemein verfügbaren Cursor.