Menue mit Icons und Drucken

Fragen zu Tkinter.
Antworten
hans_py
User
Beiträge: 13
Registriert: Sonntag 29. Januar 2012, 12:26

Hallo,

ich habe versucht den Hintergrund einiger Bildchen in einer Menueleiste einzufärben, wenn der Mauszeiger rüberfährt, da
"groove" und "raise" echt übel aussehen. Mittels der Mauskoordinaten und dem Eventhandling geht das auch für Bild 1, für Bild 2 nicht, da werden trotzdem das Bindung an den gesamten Frame gebunden ist, nur die Ausmaße des Button verwendet. Kann mir da jemand helfen. Zum Darstellen anbei der Code.

Achso und hat jemand schon mal versucht ein im Canvas erstelltes Bild auf einen Drucker umzuleiten :? .

Code: Alles auswählen

import tkinter as tk

class Test:
    
    def __init__(self):                  
        
        self.master = tk.Tk()
        self.master.bind("<Motion>", self.positions)

        #Mauspositions
        self.pos_x  = 50
        self.pos_y  = 0             
        
        self.image =tk.PhotoImage(file='open.gif')  # irgendein 16x16 *.ico
        self.image1=tk.PhotoImage(file='druck.gif')
        self.b  = tk.Button(self.master,image=self.image ,relief="flat",bg="#E0DFE3", command=self.doit)        
        self.b1 = tk.Button(self.master,image=self.image1,relief="flat",bg="#E0DFE3", command=self.doit)        
       
        self.b.place (x=2 , y=2, width=22, height=22)
        self.b1.place(x=24, y=2, width=22, height=22)

    def positions(self,event):
         self.pos_x = event.x
         self.pos_y = event.y
         print (self.pos_x, self.pos_y)
         if    self.pos_x and self.pos_y in range (0,23)                      : self.b ['bg']="#F6F6F1"
         elif  self.pos_x in range (23,46) and self.pos_y in range (0,23): self.b1['bg']="#F6F6F1" 
         else: self.b['bg']="#E0DFE3"     
         self.master.update()                                                                    

    def doit(self): print ("trallala")
    
test = Test()
test.master.mainloop()
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi hans_py

Habe dein Skript ein wenig abgeändert:

Code: Alles auswählen

import tkinter as tk

class Test:
   
    def __init__(self):                 
       
        self.master = tk.Tk()
        self.master.geometry("200x100")
       
        self.image_but_01 =tk.PhotoImage(file='open.gif') #irgendein 16x16 *.ico
        self.image_but_02=tk.PhotoImage(file='druck.gif')
        
        self.button_frame = tk.Frame(self.master, bd=1, relief='raised')
        self.button_frame.pack(fill='x')
        
        self.button_01 = tk.Button(self.button_frame, image=self.image_but_01,
            relief="flat", bg="#E0DFE3", activebackground="#F6F6F1",
            command=self.doit)
        self.button_01.pack(side='left', pady=1)
        
        self.button_02 = tk.Button(self.button_frame, image=self.image_but_02,
            relief="flat", bg="#E0DFE3", activebackground="#F6F6F1",
            command=self.doit)       
        self.button_02.pack(side='left', pady=1)

    def doit(self):
        print ("trallala")
   
test = Test()
test.master.mainloop()
Zum drucken von Canvas-Inhalten steht nur der folgende Befehl zur Verfügung:

Code: Alles auswählen

canvas.postscript(options)
Um mehr über die Optionen zu erfahren bitte 'googlen'

Gruß wuf :wink:
Take it easy Mates!
hans_py
User
Beiträge: 13
Registriert: Sonntag 29. Januar 2012, 12:26

Erst einmal vielen Dank wuf,

ist eine Möglichkeit, activebackground für den Button als Option zu verwenden. Hatte bei den meisten
kommerziellen Programmen gesehen, dass der Hintergrund eingefärbt wird, wenn die Maus nur im Focus steht, ohne
den Button zu klicken. Deshalb habe ich die Mauspositionen ausgelesen. Und mir ist nicht klar, warum dieses
Highlighting für ein Bild funzt und für das andere nicht.

Beim Drucken mach ich mich nochmal schlau - Danke
Antworten