Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- import pynput
- import win32con
- import win32gui
- class App:
- def __init__(self, master):
- self.master = master
- self.buttons = {}
- self.create_widgets()
- self.keyboard_listener = pynput.keyboard.Listener(on_press=self.on_key_press, on_release=self.on_key_release)
- self.keyboard_listener.start()
- self.setup_overlay()
- self.master.bind('<Button-1>', self.start_move)
- self.master.bind('<B1-Motion>', self.do_move)
- def setup_overlay(self):
- self.master.overrideredirect(True)
- self.master.wm_attributes('-topmost', True)
- self.master.wm_attributes("-transparentcolor", "white")
- self.master.configure(bg='white')
- self.hwnd = self.master.winfo_id()
- self.force_always_on_top()
- def force_always_on_top(self):
- win32gui.SetWindowPos(self.hwnd, win32con.HWND_TOPMOST, 0, 0, 0, 0, win32con.SWP_NOMOVE | win32con.SWP_NOSIZE | win32con.SWP_SHOWWINDOW)
- def create_widgets(self):
- for text, key, color, row, column in (('Z', 'z', 'red', 0, 1), ('Q', 'q', 'green', 1, 0), ('S', 's', 'grey', 1, 1), ('D', 'd', 'blue', 1, 2), ('Dash', 'space', 'violet', 2, 1), ('Saut!', 'v', 'yellow', 2, 2), ('Verrouillage', 'w', 'brown', 2, 0), ('Parry', 'a', 'brown', 0, 0)):
- self.create_button(text, key, color, row, column)
- self.buttons['z'][0].focus_set()
- self.master.update_idletasks()
- width = self.master.winfo_width()
- height = self.master.winfo_height()
- self.master.geometry(f"{width}x{height}")
- def create_button(self, text, key, color, row, column):
- button = tk.Button(self.master, text=text, width=10, height=5, relief='solid', highlightthickness=4, takefocus=True, bg='white')
- button.bind('<Button-1>', lambda event: button.focus_set())
- button.grid(row=row, column=column, padx=5, pady=5)
- self.buttons[key] = (button, color)
- def on_key_press(self, key):
- if key == pynput.keyboard.Key.space:
- key_name = 'space'
- else:
- key_name = getattr(key, 'char', None)
- if key_name in self.buttons:
- self.change_button_color(key_name, self.buttons[key_name][1])
- def on_key_release(self, key):
- if key == pynput.keyboard.Key.space:
- key_name = 'space'
- else:
- key_name = getattr(key, 'char', None)
- if key_name in self.buttons:
- self.change_button_color(key_name, 'white')
- def change_button_color(self, key, color):
- self.buttons[key][0].configure(bg=color)
- def start_move(self, event):
- self.master.x = event.x
- self.master.y = event.y
- def do_move(self, event):
- deltax = event.x - self.master.x
- deltay = event.y - self.master.y
- x = self.master.winfo_x() + deltax
- y = self.master.winfo_y() + deltay
- self.master.geometry(f"+{x}+{y}")
- self.force_always_on_top()
- root = tk.Tk()
- root.title("")
- app = App(root)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment