Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 18, 2023 14:24:00

Distrmaster
Зарегистрирован: 2023-01-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

Здравствуйте! Помогите пожалуйста. Нужно чтобы в одной функции определялось кокая кнопка нажата



11010000 10100011 11010000 10110110 11010000 10110101 00100000 11010000 10111011 11010000 10110101 11010001 10000111 11010001 10000011 00100001

Отредактировано Distrmaster (Янв. 18, 2023 18:23:11)

Офлайн

#2 Янв. 18, 2023 14:53:03

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

Distrmaster
Здравствуйте! Помогите пожалуйста. Нужно чтобы через if проверялось перекрывает ли курсор кнопку.
https://metanit.com/python/tkinter/2.20.php

Офлайн

#3 Янв. 18, 2023 15:23:15

Distrmaster
Зарегистрирован: 2023-01-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

m1r42
Мне нужно чтобы именно через if была проверка



11010000 10100011 11010000 10110110 11010000 10110101 00100000 11010000 10111011 11010000 10110101 11010001 10000111 11010001 10000011 00100001

Офлайн

#4 Янв. 18, 2023 15:36:07

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

Distrmaster
Мне нужно чтобы именно через if была проверка
Тогда не понимаю, зачем? Если есть готовое решение.

Офлайн

#5 Янв. 18, 2023 18:20:58

Distrmaster
Зарегистрирован: 2023-01-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

m1r42
Извините не правильно сформулировал. Мне нужно чтобы в одной функции определялось кокая кнопка нажата



11010000 10100011 11010000 10110110 11010000 10110101 00100000 11010000 10111011 11010000 10110101 11010001 10000111 11010001 10000011 00100001

Отредактировано Distrmaster (Янв. 18, 2023 18:27:44)

Офлайн

#6 Янв. 19, 2023 10:02:25

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

 if func_name() == "some key":
    tratata



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Янв. 19, 2023 10:28:02

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

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)

Офлайн

#8 Янв. 19, 2023 12:45:04

Distrmaster
Зарегистрирован: 2023-01-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

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

извините пробелы почему-то не отображаются



11010000 10100011 11010000 10110110 11010000 10110101 00100000 11010000 10111011 11010000 10110101 11010001 10000111 11010001 10000011 00100001

Отредактировано Distrmaster (Янв. 19, 2023 12:47:12)

Офлайн

#9 Янв. 19, 2023 13:13:14

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

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 в вашем случае вообще нафиг не нужен, кнопка и сама знает, что ее нажали, надо только правильно прописать ей команду.

Отредактировано m1r42 (Янв. 19, 2023 13:20:19)

Офлайн

#10 Янв. 19, 2023 13:49:48

Distrmaster
Зарегистрирован: 2023-01-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить кокая кнопка нажата? Tkinter

m1r42
Спасибо за код но я не понимаю зачем нужны эти цифры и как работает код. Просто я Python изучаю около 2-х месяцев по этому не очень много знаю



11010000 10100011 11010000 10110110 11010000 10110101 00100000 11010000 10111011 11010000 10110101 11010001 10000111 11010001 10000011 00100001

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version