Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 21, 2016 16:57:11

timoxa4930
Зарегистрирован: 2016-04-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра Пятнашки,пару ньюансов

Здравстуйте. Делаю игру пятнашки. сделал кнопки,16 штук.Сделал окно в виде таблицы,и ячейкам распределил 16 кнопок,одно из них зажата. т.е DISABLED
Хочу чтобы при нажатии кнопки проверялось есть ли соседние пустые(т.е самому задать данное условие)
Можно задать логические переменные на проверку
При нажатии на кнопку вызывается функция,это прописал в самой кнопке(command:

btn1 = Button(root,               
             text=1,width=15, height=7,       
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN,command=button_clicked).grid(row=0,column=0)

Не могу понять как определить какая кнопка нажата,как это сделать? Перерыл всю литературу,помогите советом.
вот код:
# -*- coding: utf-8 -*-
from Tkinter import *
root = Tk()
root.minsize(width=500,height=500)
root.maxsize(width=500,height=500)
#canv = Canvas(root,width=500,height=500,bg="#92AFE2",
 #         cursor="pencil")
 
 
# command= """Функция или метод при нажатии кнопки"""
#textvariable=
#Связывает Tkinter переменной (обычно StringVar) к кнопке. Если переменная изменяется, кнопка текст обновляется. (textVariable/переменная)
 
 
#state=The button state: NORMAL, ACTIVE or DISABLED. Default is NORMAL. (state/State)
 
def button_clicked():
    btn1['text']=5  #проверка,но не работает,если просто print 1 то сработает
   
 
 
 
btn1 = Button(root,               
             text=1,width=15, height=7,       
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN,command=button_clicked).grid(row=0,column=0)
#btn.grid(row=0. column=1. sticky=W)
 
btn2 = Button(root,               
             text=2,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=0,column=1)
btn3 = Button(root,               
             text=3,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=0,column=2)
btn4 = Button(root,               
             text=4,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=0,column=3)
 
 
 
btn5 = Button(root,               
             text=5,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=1,column=0)
btn6 = Button(root,               
             text=6,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=1,column=1)
btn7 = Button(root,               
             text=7,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=1,column=2)
btn8 = Button(root,               
             text=8,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=1,column=3)
 
btn9 = Button(root,               
             text=9,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=2,column=0)
btn10 = Button(root,               
             text=10,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=2,column=1)
btn11 = Button(root,               
             text=11,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=2,column=2)
btn12 = Button(root,               
             text=12,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=2,column=3)
 
btn13 = Button(root,               
             text=13,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=3,column=0)
btn14 = Button(root,               
             text=14,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=3,column=1)
btn15 = Button(root,               
             text=15,       
             width=15,height=7,     
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN).grid(row=3,column=2)
btn16 = Button(root,               
             text="",       
             width=15,height=7,     
             bg="#FFAAA5",fg="blue",activebackground="#FFAAA5",borderwidth=3,highlightbackground="#FFAAA5",relief=SUNKEN,state=DISABLED).grid(row=3,column=3)
 
arr_but=[btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10,btn11,btn12,btn13,btn14,btn15,btn16]
 
 
 
 
 
 
 
 
 
 
 
#btn.bind("<Button-1>", Hello) 
#btn.pack() 
#canv.pack()
#btn.pack()
#btn1.pack()  #(side='left')
root.mainloop()

Заранее благодарен.

Отредактировано timoxa4930 (Апрель 21, 2016 16:58:50)

Офлайн

#2 Апрель 21, 2016 19:18:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Игра Пятнашки,пару ньюансов

Офлайн

#3 Апрель 21, 2016 22:16:11

timoxa4930
Зарегистрирован: 2016-04-21
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Игра Пятнашки,пару ньюансов

FishHook
Гуглится крайне простоhttp://stackoverflow.com/questions/6920302/how-to-pass-arguments-to-a-button-command-in-tkinter
Так не понял как получить значение кнопки в функцию,я хочу получить саму кнопку,и изменить её текст
def button_clicked():
	btn1.config(text=2)
btn1 = Button(root,               
             text=1,width=15, height=7,       
             bg="red",fg="blue",activebackground="#2C28FF",borderwidth=3,highlightbackground="#6EFFE7",relief=SUNKEN,command=lambda: (button_clicked())).grid(row=0,column=0)
Но выбивает ошибку что ему не известен config,пробовал configure итд…
Но оно не принимает значение кнопки

Если сделать так
def button_clicked(event):
	event.config(text=2)
Ругается на event

Офлайн

#4 Апрель 22, 2016 05:50:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Игра Пятнашки,пару ньюансов

Ну например так

#!/usr/bin/python2.7
# -*- coding:utf-8 -*-
from Tkinter import Tk, Button
root = Tk()
root.minsize(width=500, height=500)
root.maxsize(width=500, height=500)
def button_clicked(btn):
    print (btn)
class MyButton(Button):
    def __init__(self, root, **kwargs):
        kwargs["command"] = lambda: button_clicked(self)
        Button.__init__(self, root, **kwargs)
btn1 = MyButton(root, text=1).grid(row=0, column=0)
root.mainloop()



Отредактировано FishHook (Апрель 22, 2016 05:51:15)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version