我有一个用python文件制作的按钮,我一直在尝试制作它,以便将屏幕从一个屏幕更改为另一个屏幕。
import processing.sound.*;
SoundFile file;
String audioName = "CantinaSong.mp3";
String path;
void draw() {
path = sketchPath (audioName);
file = new SoundFile(this, path);
file.play();
}
当我单击按钮时,它会打印“Test1”和“Test2”而不更改屏幕。对不起,如果这对其他人来说真的很明显,但我不知道如何修复它,有人可以帮我吗?
答案 0 :(得分:2)
如果你发布MCVE会更好,但我自己做了一个。以下是如何做到的:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
def callbackTo2(instance):
sm.current="ScreenTwo"
def callbackTo1(instance):
sm.current="ScreenOne"
class ScreenOne(Screen):
def __init__(self, *args):
super(ScreenOne, self).__init__(name='ScreenOne')
self.add_widget(Button(text='Switch To Screen Two', size_hint=(0.1, 0.1), on_press=callbackTo2, pos_hint={"x":0.90, "top":1.0}))
class ScreenTwo(Screen):
def __init__(self, *args):
super(ScreenTwo, self).__init__(name='ScreenTwo')
self.add_widget(Button(text='Switch To Screen One', size_hint=(0.1, 0.1), on_press=callbackTo1, pos_hint={"x":0.90, "top":1.0}))
sm = ScreenManager()
class ScreenPlayApp(App):
def build(self):
sm.add_widget(ScreenOne())
sm.add_widget(ScreenTwo())
return sm
if __name__ == '__main__':
app = ScreenPlayApp()
app.run()
请注意,只有一个ScreenManager实例,所有屏幕最初都可以添加到ScreenManager,并使用sm.current=
切换屏幕。此外,您可以使用__init__()
方法构建屏幕。使用on_enter
会在每次显示屏幕时重建屏幕成员。此外,你不能同时使用'尺寸'和' size_hint'对于相同的小部件,除非您要设置' size_hint'到'无'。