Как сказал Брайан Оукли, ваш код создает Frame
без проблем.
Я также не знаю, что вы подразумеваете под "неправильным созданием окна Tkinter".
Как сказал acw1668, у вас есть ошибкив коде:
- вы не можете использовать одно и то же имя для переменной и функции -
left_click
, right_click
bind()
(аналогично command=
и after()
) нужно имя функции - значит без ()
.Это называется «обратный вызов».Если вам нужно использовать функцию с аргументами, вы можете создать функцию без аргументов, которая запускает вашу функцию с аргументом.Вы также можете использовать lambda
для создания этой функции непосредственно в bind()
bind()
, но не можете получить результат из функции, поэтому вместо использования return
вам нужно присвоить результат переменной global
итогда вы можете получить его вне функции.
И мои очки:
<Button-2>
это средняя кнопка, <Button-3>
это правая кнопка. bind()
ожидает обратного вызова, который получает один параметр - event
.
import tkinter as tk
def clicking_pad(worker_1):
global left_click
global right_click
def on_left_click(store: object) -> object:
#return store
global left_click
left_click = store
print('[INSIDE] left_click:', left_click)
def on_right_click(store: object) -> object:
#return store
global right_click
right_click = store
print('[INSIDE] right_click:', right_click)
root = tk.Tk()
frame = tk.Frame(root, width=300, height=250)
frame.pack()
frame.bind("<Button-1>", lambda event:on_left_click("GO"))
frame.bind("<Button-3>", lambda event:on_right_click("STOP"))
root.mainloop()
print('[OUTSIDE] left_click:', left_click)
print('[OUTSIDE] right_click:', right_click)
clicking_pad(None)
РЕДАКТИРОВАНИЕ: Без lambda
def on_button_1(event):
on_left_click("GO")
def on_button_3(event):
on_right_click("STOP")
frame.bind("<Button-1>", on_button_1)
frame.bind("<Button-3>", on_button_3)
или если ваша функция возвращает значение
def on_button_1(event):
global result
result = on_left_click("GO")
def on_button_3(event):
global result
result = on_right_click("STOP")
frame.bind("<Button-1>", on_button_1)
frame.bind("<Button-3>", on_button_3)