Probleme mit Event-State, Falsche Zahl

Fragen zu Tkinter.
Antworten
Glühbirne
User
Beiträge: 7
Registriert: Samstag 23. Januar 2021, 14:34

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
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Antworten