Найти - Пользователи
Полная версия: Как определить кокая кнопка нажата? Tkinter
Начало » Python для новичков » Как определить кокая кнопка нажата? Tkinter
1 2
Distrmaster
Здравствуйте! Помогите пожалуйста. Нужно чтобы в одной функции определялось кокая кнопка нажата
m1r42
Distrmaster
Здравствуйте! Помогите пожалуйста. Нужно чтобы через if проверялось перекрывает ли курсор кнопку.
https://metanit.com/python/tkinter/2.20.php
Distrmaster
m1r42
Мне нужно чтобы именно через if была проверка
m1r42
Distrmaster
Мне нужно чтобы именно через if была проверка
Тогда не понимаю, зачем? Если есть готовое решение.
Distrmaster
m1r42
Извините не правильно сформулировал. Мне нужно чтобы в одной функции определялось кокая кнопка нажата
ZerG
 if func_name() == "some key":
    tratata
m1r42
Distrmaster
Извините не правильно сформулировал. Мне нужно чтобы в одной функции определялось кокая кнопка нажата
Все равно не понятно о чем речь. Надо таки код.
 from tkinter import *
from tkinter import ttk
 
 
root = Tk()
root.geometry("250x200")
 
def some_func(): 
    print('я кнопка, я нажата')
def some_func2(): 
    print('я другая кнопка, я нажата')
 
 
btn = ttk.Button(text="Click", command=some_func)
btn.pack(anchor=CENTER, expand=1)
btn = ttk.Button(text="Click", command=some_func2)
btn.pack(anchor=CENTER, expand=1)
Distrmaster
m1r42

window.py код отвечающий за окно в нём и проблема


 import a
import main
import tkinter as tk
i = 0
button_index = 0
button_array = []
win = tk.Tk()
b = main.Game()
def button_Down():
    global text_1
    global button
    def button_0(e):
        button_index = i
 
    i = len(button_array)
    for d in range(i):
        button_array[d].bind('<ButtonPress>', button_0)
        button_array
    if main.def_name == a.start_game() and button_array[0]['text'] == 'Ок':
        b = main.Game()
        text_1.destroy()
        for i in range(len(button_array)):
            button_array[i].destroy()
        button_array.clear()
        main.def_name = a.start_game_Ок()
        b = main.Game()
        text_1 = tk.Label(win, text=b[0])
        text_1.pack()
        for i in range(len(b) - 1):
            button_array.append(tk.Button(text=b[i + 1], command=button_Down))
            button_array[i].pack()
        return
    if main.def_name == a.start_game_Ок() and button_array[0]['text'] == 'Я боюсь!'  :
        def l(e):
            global text_1
            b = main.Game()
            text_1.destroy()
            for i in range(len(button_array)):
                button_array[i].destroy()
            button_array.clear()
            main.def_name = a.start_game_Ок()
            b = main.Game()
            text_1 = tk.Label(win, text=b[0])
            text_1.pack()
            for i in range(len(b) - 1):
                button_array.append(tk.Button(text=b[i + 1], command=button_Down))
                button_array[i].pack()
text_1 = tk.Label(win, text=b[0])
text_1.pack()
for i in range(len(b) - 1):
    button_array.append(tk.Button(text=b[i + 1], command=button_Down))
    button_array[i].pack()
h = 200
w = 400
win.geometry(f'{w}x{h}+500+200')
win.mainloop()



a.py архив из которого берётся текст и кнопки


 def start_game():
    return ['Текстовое приключение', 'Ок']
def start_game_Ок():
    return ['Тут мой текст',
               'кнопка 1','кнопка 2']


main.py отвечает за вызов текста и кнопок и возвращает в window.py


 import a
def_name = a.start_game()
def Game():
    rtrn = def_name
    print (rtrn)
    return rtrn

извините пробелы почему-то не отображаются
m1r42
Distrmaster
Distrmaster
Гмм, код я зря попросил . Где-то эту тему я уже поднимал. Динамически создает кнопки и они работают как надо.

Вот рабочий код:
 import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x500+200+100')
buttons= [1, 2, 3, 4, 5]
def press_button(show):
    print(show)
for item in buttons:
    locals()["button"+str(item)] = ttk.Button(root, text="button"+str(item),
                                        command=lambda i=item: press_button(i))
    locals()["button"+str(item)].pack(anchor="nw")
    print(id(locals()["button"+str(item)]))

bind в вашем случае вообще нафиг не нужен, кнопка и сама знает, что ее нажали, надо только правильно прописать ей команду.
Distrmaster
m1r42
Спасибо за код но я не понимаю зачем нужны эти цифры и как работает код. Просто я Python изучаю около 2-х месяцев по этому не очень много знаю
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB