2016-10-31 6 views
1

Python zu bekommen - Veranstaltungen, Rahmen und Tkinter

Hier habe ich meine GameApplication Klasse, die die tkinter Anwendung erstellt und ausgeführt wird. Ich möchte es haben, damit ich die gleiche Funktion von jedem Rahmen anrufen kann und diese Funktion benutze, um herauszufinden, welcher Rahmen geklickt wurde. Ich tauche gerade erst in Python ein, also entschuldige mich, wenn das einfach scheint.Python - Wie würde ich eine einzelne Funktion verwenden, um Informationen über den Rahmen in Tkinter

Vielen Dank für die Hilfe im Voraus.

# Import needed classes. 
from tkinter import * 


# Create the GameApplication class to run the GUI 
class GameApplication(Frame): 
    def __init__(self, master=None): 
     super().__init__(master) 
     self.grid() 
     self.grid_rowconfigure(0, weight=1) 
     self.grid_columnconfigure(0, weight=1) 

     self.position_1 = Frame(width=100, height=100, bg="#CC0000") 
     # This is the Frame I want to get information about. 
     self.position_1.bind("<Button-1>", self.callback) 
     self.position_1.grid(column=0, row=0) 

     self.position_2 = Frame(width=100, height=100, bg="#00CC00") 
     # And this one too. 
     self.position_2.bind("<Button-1>", self.callback) 
     self.position_2.grid(column=1, row=0) 

    def callback(self, event): 
     print("?") 

if __name__ == "__main__": 
    root = Tk() 
    app = GameApplication(master=root) 
    root.mainloop() 
+0

Sie können jedem Frame einen aussagekräftigen Namen geben: 'Frame (name = '...', ...)' und dann den Frame-Namen in 'Callback (...)' -Funktion mit 'str (event.widget) '. – acw1668

Antwort

1

Werfen Sie einen Blick darauf. Es ist ein kleines Projekt, das ich in Python geschrieben habe. Ich habe eine Funktion, die den Status jedes Anrufs überprüft. Ich rufe diese Funktion auf, nachdem jede Funktion ausgeführt wurde.

class Messengers: 
    def __init__(self): 
     self.box = tkMessageBox 

    def successer(self): 
     self.box.showinfo("ImageR Success", "Done YO! Go run a test :)") 

    def failure(self): 
     self.box.showerror('ImageR Failure', 'Yo you broke me!') 

Der Code ist hier https://github.com/jaytarang92/imager. Ich verwende subprocess.check_ouput, um sicherzustellen, dass der Aufruf korrekt ausgeführt wurde.

Verwandte Themen