我正试图从一个屏幕换到另一个屏幕。但问题是我不能在类中调用def我也想改变屏幕。
class ScreenTwo(Screen):
def remove_code(self):
main = Main_app()
self.parent.current = main.main_run()
class Main_app(Screen):
def main_run(self):
self.add_widget(Label(text="Test 1", color=(1,0,0,1), font_size=(30),size_hint=(0.4,0.15), pos_hint={"x":0.3, "top": 0.93}))
它只是将屏幕更改为Main_App屏幕,并且不显示标签。所以它就像它会进入.main_run()
我怎样才能改变它并显示标签?
答案 0 :(得分:1)
当你这样做时
self.parent.screens[SCREENINDEXHERE].main_run()
您最有可能只是改变哪个屏幕是最新的。
你应该能够以两种方式做到你需要的东西。
java.lang.IllegalArgumentException: The two inputs have different execution contexts.
at org.apache.flink.api.java.DataSet.checkSameExecutionContext(DataSet.java:1799)
at org.apache.flink.api.java.operators.TwoInputOperator.<init>(TwoInputOperator.java:42)
at org.apache.flink.api.java.operators.TwoInputUdfOperator.<init>(TwoInputUdfOperator.java:80)
at org.apache.flink.api.java.operators.CrossOperator.<init>(CrossOperator.java:90)
at org.apache.flink.api.java.operators.CrossOperator$DefaultCross.<init>(CrossOperator.java:150)
at org.apache.flink.api.java.DataSet.crossWithTiny(DataSet.java:1088)
at org.myorg.quickstart.MessageStreamProcessor$MessageProcessor.processElement(MessageStreamProcessor.java:138)
at org.myorg.quickstart.MessageStreamProcessor$MessageProcessor.processElement(MessageStreamProcessor.java:125)
at org.apache.flink.streaming.api.operators.KeyedProcessOperator.processElement(KeyedProcessOperator.java:94)
at org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:207)
at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:69)
at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:264)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:718)
屏幕名称是您在将其添加到管理员时为屏幕指定的名称,您还可以执行以下操作:
TRY_CONVERT
其中屏幕索引是屏幕添加到列表的点数(即,如果将screentwo添加为第二个屏幕,则您获得第二个索引(即一个)。
此外,您也可以使用管理器代替父级来使用屏幕。