gpt4 book ai didi

python - 弹出窗口中的 Kivy 按钮不调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 09:53:10 28 4
gpt4 key购买 nike

这是有问题的代码:

Class Screen1(Screen):
def win(self):
if win == True:
Self.open_popup()

def open_popup(self):
content = BoxLayout()
button = Button(text="restart", on_press=self.retry(),
on_release=self.dismiss() )
content.add_widget(button)
self.popup = Popup(title="Popup", content=content)

def retry(self):
#resets game

它给了我错误“none is not callable”和“Screen1 has no attribute dismiss”我做错了什么?

此外,我不得不像这样调用弹出窗口而不是在 .kv 文件中,因为出于某种原因它不能与屏幕管理器一起使用

最佳答案

问题 它给我错误“none is not callable”和“Screen1 has no attribute dismiss”我做错了什么?

Answer Popup 具有可绑定(bind)的功能,例如打开和关闭。

问题另外,我不得不像这样调用弹出窗口而不是在 .kv 文件中,因为出于某种原因它不能与屏幕管理器一起使用

Answer 您可以创建一个Popup widget类,并在kv文件中定义所有的widgets。详情请引用以下示例。

例子

主.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import BooleanProperty
from kivy.uix.popup import Popup


class MessageBox(Popup):
def __init__(self, obj, **kwargs):
super(MessageBox, self).__init__(**kwargs)
self.obj = obj


class Screen1(Screen):
win = BooleanProperty(True)

def __init__(self, **kwargs):
super(Screen1, self).__init__(**kwargs)
self.name = "screen1"
self.display_winner()

def display_winner(self):
if self.win:
popup = MessageBox(self) # pass screen1 object
popup.open()

def retry(self):
print("Reset Game")


class ScreenManagement(ScreenManager):
pass


class TestApp(App):
title = "Kivy Screen Manager & Popup Demo"

def build(self):
return ScreenManagement()


if __name__ == "__main__":
TestApp().run()

测试.kv

#:kivy 1.10.0

<MessageBox>:
title: "Popup"
size_hint: None, None
size: 400, 400
auto_dismiss: False

BoxLayout:
orientation: "vertical"
Label:
text: "Player 1 is the winner!"
Button:
size_hint: 1, 0.2
text: "restart"
on_press: root.obj.retry()
on_release: root.dismiss()

<ScreenManagement>:
Screen1:

<Screen1>:
name: "screen1"

输出

enter image description here enter image description here

关于python - 弹出窗口中的 Kivy 按钮不调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com