, поэтому я и мои друзья пытались закодировать игру на киви, но мы застряли на этом этапе, мы не можем понять, как для изменения цвета или изображения кнопки, нажав другую. Игра на шахматной доске, мы пытаемся сделать игру Fox & Hound, поэтому идея заключается в том, что, когда пользователь нажимает «Собака», загораются 2 блока на шахматной доске, указывающие, куда вы можете двигаться, а затем, нажав одну из них, измените образ гончей на ту, которая была нажата.Kivy Программирование, как изменить цвет или изображение кнопки, нажав другую кнопку
Вот код, надеюсь, вы можете мне помочь, спасибо.
from kivy.app import App
from kivy.graphics import *
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.core.window import Window
from kivy.uix.popup import Popup
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.stacklayout import StackLayout
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.config import Config
Window.size = (800, 800)
intento = 0
nroboton= [0,0]
class MainWindow(GridLayout): # main class
def popbtns(self):
i = 3
self.add_widget(Label(text=' '))
self.add_widget(Btn(id=str(i+3), size=(100, 100), background_color=(0,0,0,1)))
i = i - 1
class Btn(Button): # button class
def on_release(self):
print('self.pos= ' + str(self.id))
def on_press(self):
global intento
if(intento == 1):
nroboton[1] = self.id
print('moviendose de ' + str(nroboton[0]) + 'a ' + str(nroboton[1]))
intento = 0
else:
nroboton[0] = self.id
intento = 1
print('llamada ssh ' + str(self.id))
class But(Button):
def new(self):
self.background_color=(0,250,0,1)
class Zorro(Button): # button class
def on_release(self):
print('self.pos= ' + str(self.id))
def on_press(self):
global intento
if(intento == 1):
nroboton[1] = self.id
print('moviendose de ' + str(nroboton[0]) + 'a ' + str(nroboton[1]))
intento = 0
else:
nroboton[0] = self.id
intento = 1
print('llamada ssh ' + str(self.id))
class MainApp(App):
def build(self):
main = MainWindow(cols=3, rows=1)
self.root = main # don't use global!
# make background
with main.canvas:
Rectangle(pos=main.pos, size=(10000,10000))
# populate gridlayout with Buttons
#main.add_widget(Debug(text='debug', background_color=(1, 0, 0, 1)))
main.popbtns()
# print position of buttons...
Clock.schedule_once(self.delayed_function, 0.1)
def delayed_function(self, dt):
self.print_buttons_pos()
def print_buttons_pos(self):
for child in self.root.children:
print(str(child) + ' pos is ' + str(child.id))
if __name__ == "__main__":
MainApp().run()
И вот изображение Гончих и Фокс. Hound Fox
Ok, так что это все, что я мог бы уменьшить его, надеюсь, что это помогает
Пожалуйста, уменьшите это до [mcve]. Как есть, есть много дополнительной информации. А именно, вы должны просто иметь приложение kivy с двумя кнопками на нем. –
Сделано! Или, по крайней мере, я попытался уменьшить его. –
Все еще могло быть [* way * less.] (Https://gist.github.com/waynew/16818fc29de61d4f41118f5c3b6dea4e) –