- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在上课时遇到问题,无论我做什么都会出错,请告诉我哪里错了。我一直在尝试在第一个屏幕上绑定(bind)一个按钮以在按下时打开弹出窗口,但出现此错误:
AttributeError: 'str' object has no attribute 'bind'
File "C:\Users\Lara\Downloads\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\lang.py", line 2012, in _apply_rule
setattr(widget_set, key, value)
File "kivy\weakproxy.pyx", line 22, in kivy.weakproxy.WeakProxy.__setattr__ (kivy\weakproxy.c:1189)
File "kivy\properties.pyx", line 397, in kivy.properties.Property.__set__ (kivy\properties.c:4680)
File "kivy\properties.pyx", line 429, in kivy.properties.Property.set (kivy\properties.c:5203)
File "kivy\properties.pyx", line 484, in kivy.properties.Property.dispatch (kivy\properties.c:5852)
File "kivy\_event.pyx", line 1168, in kivy._event.EventObservers.dispatch (kivy\_event.c:12154)
File "kivy\_event.pyx", line 1074, in kivy._event.EventObservers._dispatch (kivy\_event.c:11451)
File "C:\Users\Lara\Downloads\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\uix\popup.py", line 190, in on_content
self._container.add_widget(value)
File "C:\Users\Lara\Downloads\Kivy-1.9.0-py3.4-win32-x64\kivy34\kivy\uix\boxlayout.py", line 210, in add_widget
widget.bind(
.py文件相关部分:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.core.image import Image
from kivy.graphics import Color, Rectangle
from kivy.uix.popup import Popup
from kivy.properties import NumericProperty, ReferenceListProperty
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.uix.popup import Popup
class InstructionsPopup(Popup):
pass
class StartScreen(Screen):
def show_instructions(self):
p = InstructionsPopup()
p.open()
class GameScreen(Screen):
pass
class RootScreen(ScreenManager):
pass
class Main2App(App):
def build(self):
self.load_kv("main2.kv")
return RootScreen()
if __name__ == "__main__":
Main2App().run()
和.kv文件:
#:import FadeTransition kivy.uix.screenmanager.FadeTransition
<StartScreen>:
name: "start"
FloatLayout:
Button:
id: play
text: "Play!"
on_release: root.manager.current = 'game'
Button:
id: how
text: "How to play"
on_press: self.parent.parent.show_instructions()
<GameScreen>:
name: "game"
FloatLayout:
SnakeWidget:
InfoWidget:
Button:
id: menu
text: "Menu"
<InstructionsPopup>:
size_hint: 0.5, 0.5
content: "You start the game by ... "
title: "How to play"
<RootScreen>:
id: screen_manager
transition: FadeTransition()
StartScreen:
name: "start"
GameScreen:
name: "game"
我还尝试像这样在 StartScreen
类中绑定(bind)按钮:
btn = self.ids.how
btn.bind(on_press=ShowInstructions())
但它一直告诉我 self
未定义。
还有什么我可以尝试的想法或我可能错的地方吗?
最佳答案
您的 kivy 文件中有两个编码错误。
<StartScreen>:
name: "start"
BoxLayout:
#Change your layout here
# OR
#give pos or pos_hint or size_hint if you want to give floatlayout
Button:
id: play
text: "Play!"
on_release: root.manager.current = 'game'
Button:
id: how
text: "How to play"
on_press: root.show_instructions()
#First error was here
<InstructionsPopup>:
size_hint: 0.5, 0.5
title: "How to play"
#You add the content in the popup, this way
Button:
text: "dismiss"
on_release: root.dismiss()
关于python - 将按钮绑定(bind)到 .kv 文件中 .py 中的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31241186/
完美的功能代码: from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import S
我尝试使用 kv_t 存储一些数据但没有成功。我也尝试过例子forum.c & kv.c。当尝试创建第二个论坛线程时,forum.c 挂起,而 kv.c 崩溃。 当我向 kv 添加 1 个项目时,kv
my %hash = two => 2, three => 3, one => 1, ; for %hash.sort(*.key)>>.kv -> ($key, $v
我正在尝试输出同一个键的 SUM 和 COUNT 。例如。给定一个包含数百万个飞机延误事件的 .csv。使用 Apache Beam (Java),我想对每架飞机的延误持续时间进行求和,并计算每架飞机
我在 Consul 上存储了这些 KV 源: config/books/ config/common/ 在我的 Spring Boot 应用程序 application.yml 中,我将其配置如下:
所以我只是使用一些示例 Kivy 文件代码,我遇到了这段允许用户在屏幕之间切换的代码: from kivy.app import App from kivy.lang import Builder f
我一辈子都想不出如何通过 KV 文件在自定义小部件上传递自定义属性。我的应用程序是一个包含 Button() 和 TestWidget() 的简单网格。 TestWidget() 有一个 String
我希望在 Kivy 中使用 SVG,但我更喜欢在 kv 文件中使用,而不是在 py 程序中。但是,当我尝试诸如 Widget: canvas.before: Svg:
我想提取网址查询参数,并且按照this forum answer的要求,我可以使用kv {} 但我想了解这是如何工作的。 这是我的字符串:param1=val1¶m2=val2&adv=val
我的 Kivy 语言文件有许多 font_size 属性,所有属性都具有相同的值,是否可以在 KV lang 中分配变量? 当前 KV 文件示例: #User ID Label:
我有一个应用程序,其固定标题中带有三个切换按钮,该标题是屏幕管理器的外部缩进布局。初始化时,导入屏幕必须显示,即 self.ids.scrn_man.current = 'import_scn",按下
我遇到了与本主题 kv incorrect 中所述相同的问题.当我使用 Builder 并加载 kv 文件时,我有正常工作的应用程序。但是当我尝试使用自动加载 kv 文件时,我只有黑屏。有人可以向我解
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试将我的小部件创建转移到 .kv 而不是我的 main.py。我怎样才能仍然引用我的 on_press 命令? painter 是另一个子部件,包含我想调用的函数,但是我不确定如何从 .kv
一直在查看文档,但找不到如何在 kv 中正确屏蔽图像。这是我的 kv 代码: : source: 'http://webserver/120x100.png' canvas.befor
我有我的 python 代码: from kivy.app import App from kivy.uix.scatter import Scatter from kivy.uix.label im
我似乎无法为一个简单的应用程序设置背景图像。我是 kivy 的新手,对 python 有点陌生。这看起来很简单,但我发现所有示例都在 .py 文件中使用 kv 语言,而不是我想学习如何使用的 .kv
我的程序的一部分涉及用户输入自己的文本。我想要一个标签更改为输入的值,该值将存储在全局变量中。 基本上发生了什么 chosen = StringProperty() : BoxLayout:
我正在学习编写 Kivy 应用程序。我创建了一个由两个网格布局组成的玩具应用程序。一个包含两个按钮,另一个包含两个标签。任务是在单击按钮时修改标签。当所有布局都在同一个 .kv 文件中时,我可以通过简
我注意到我在网上找到的大多数示例都没有外部 .kv 文件。他们在内部定义所有实例。然而他们也说拥有外部 .kv 文件是一个很好的做法。做什么比较好?如果拥有外部 .kv 文件更好,那么我应该如何使用使
我是一名优秀的程序员,十分优秀!