所以我和我的朋友们一直在尝试在kivy上编写一个游戏,但是我们在这一点上陷入了困境,我们不知道如何通过按下另一个按钮来改变按钮的颜色或图像。 游戏是在一个棋盘,我们正在尝试做一个狐狸和猎犬的游戏,所以我们的想法是,当用户按下一个猎犬,棋盘上的2个方块亮起,指示你可以移动的地方,然后按下其中一个,将de Hound的图像更改为按下的图像。在
这是密码,希望你能帮我,谢谢。在
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()
好的,所以这就是我所能减少的,希望能有所帮助
下面是一些代码,告诉您如何通过按另一个按钮来更改一个按钮的颜色。在
我使用父窗口的
ids
属性,这无疑是更好的方法之一。我在这里留下了一堆你的代码,但是你会注意到我最后删除了很多,因为那不是MCVE的一部分。在相关问题 更多 >
编程相关推荐