Mausabfrage Tkinter

Fragen zu Tkinter.
Antworten
Benutzeravatar
granpatomic
User
Beiträge: 6
Registriert: Sonntag 18. Oktober 2015, 13:19

Sonntag 3. Juli 2016, 17:57

Hallo,
Ich bin gerade daran das Menue für ein Sandbox 2d spiel zu Programmieren aber bei der abfrage der Mausposition klappt irgendetwas nicht!
Ich möchte das, wenn die maus die Koordiante 300 erreicht der Print befehl auf geführt wird. Es Klapp auch aber das Programm stürzt immer ab und die bilder werden nicht geladen und die maus ist so ein "Lade kreis". Warum? :x

Code: Alles auswählen

from tkinter import *
import time
import random

class spiel:
    def __init__(self):
        self.tk = Tk()
        self.tk.title("Minequar Adventure")
        self.tk.resizable(0, 0)
        self.tk.wm_attributes("-topmost", 1)
        self.canvas = Canvas(self.tk, width=800, height=800, highlightthickness=0)
        self.canvas.pack()
        self.tk.update()
        self.canvasheight=800
        self.canvaswidth=800
        self.sprites=[]
        self.rennen=True

    def menu(self):
        self.bg = PhotoImage(file="hintergrund1.gif")
        self.buttonup = PhotoImage(file="buttonunpress.gif")
        self.buttonp = PhotoImage(file="buttonpress.gif")
        w = self.bg.width()
        h = self.bg.height()
        for x in range(0, 10):
            for y in range(0, 10):
                self.canvas.create_image(x * w, y * h, image=self.bg, anchor="nw")
        self.canvas.create_image(300, 300, image=self.buttonup, anchor="nw")

    def mausabfrage(self):
        while True:
            self.mausx = self.tk.winfo_pointerx()
            self.mausy = self.tk.winfo_pointery()
            if self.mausx and self.mausy == 300:
                    print("jaw")
        
    
          
            
            

        


s = spiel()
s.menu()
s.mausabfrage()
DasIch
User
Beiträge: 2480
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Sonntag 3. Juli 2016, 18:34

Dein Code hängt in der Endlosschleife fest und solange die läuft kann Tkinter nichts anderes tun wie auf Eingabe reagieren oder Ausgaben erzeugen.

Du musst in GUI Code auf solche Endlosschleifen verzichten. Tkinter bietet dir bestimmt an eine Funktion aufzurufen, wenn sich die Position des Zeigers verändert. Such mal danach und nutz diese Möglichkeit.
Antworten