Seite 1 von 1

Probleme mit Event-State, Falsche Zahl

Verfasst: Samstag 23. Januar 2021, 14:55
von Glühbirne
Moin,

das folgende Programm öffnet ein Fenster. Im oberen Label kann man reinklicken (Mausknopf 1), dabei kann man eine Modifier-Taste gedrückt halten.

Wenn ich auf meinem Rechner (Windows 10, Python 3.9.1) das Programm benutze, die ALT-Taste drücke (egal ob links oder rechts) und ins obere Feld klicke, erhalte ich seltsame Werte für event.state. State ist mit 0x20000 weit außerhalb des ansonsten üblichen Bereiches.

Ist das normal? Mein Fehler? Habt ihr andere Ausgaben? Andere Modifier verhalten sich "normal". Die Windows-Taste wird als Modifier nicht erkannt.

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk
 
class Application:
    def __init__(self):
        self.root = tk.Tk()
        self.root.geometry('300x200')
        self.create_widgets()
 
    def create_widgets(self):
        self.label = ttk.Label(self.root, text='Ereignisfeld', relief=tk.SUNKEN )
        self.label.pack(side=tk.TOP, fill=tk.BOTH, expand=tk.YES)
        self.label.bind('<Button-1>', self.onClick)
 
        self.labelInfoVar = tk.StringVar(value='Beschreibung')
        self.labelInfo = ttk.Label(self.root, textvariable=self.labelInfoVar, relief=tk.SUNKEN )
        self.labelInfo.pack(side=tk.TOP, fill=tk.BOTH, expand=tk.YES)
 
        self.quit = ttk.Button(self.root, text="Quit", command=self.root.destroy)
        self.quit.pack(side=tk.BOTTOM)
 
    def onClick(self, event):
        state = event.state;
        self.labelInfoVar.set("onClick\n Event=%s\n State=%s" %(event, hex(state)))
 
app = Application()
app.root.mainloop()

Siehe auch: https://github.com/python/cpython/blob/ ... _init__.py
etwa Zeile 250

Viele Grüße

Re: Probleme mit Event-State, Falsche Zahl

Verfasst: Samstag 23. Januar 2021, 15:11
von __deets__
Das sieht doch einfach nach einer Bitflagge aus. Unter Linux und KDE kann ich mit ALT gar nicht darauf klicken, weil das irgendwie abgefangen wird zu einem "bewege das Fenster mit der Maus"-Ding. Shift und Ctrl sind Bit 0 und 3. Bei dir ist Alt eben Bit 17.

Da es auch keinerlei Einstellungen dafuer gibt, wuerde ich das also einfach so hinnehmen. Aendern laesst es sich eh nicht, und es ist doch auch eigentlich egal, oder? Bit ist Bit.