gpt4 book ai didi

python - kivy - 绑定(bind)按钮以生成小部件的附加实例?

转载 作者:行者123 更新时间:2023-12-01 04:58:50 25 4
gpt4 key购买 nike

我创建了两个可以调整大小的 Scatter 小部件,我正在寻找一种生成更多 Scatter 小部件的方法(可能最多 20 个) )每次按下按钮时。我尝试编写 addfunction() 并将其绑定(bind)到 Button,但它似乎不起作用。

我正在寻找一种方法来生成 Scatterer 小部件的新实例(以及具有 canvas 的子小部件 Drawer > 出现提示时显示其占用的空间)。

这是我的Python代码:

from kivy.app import App
from kivy.uix.widget import Widget

from kivy.uix.scatter import Scatter
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button

class Scatterer(Scatter):
pass
class Drawer(FloatLayout):
pass
class MainWindowWidget(FloatLayout):
def addfunction(*args):
root = MainWindowWidget()

s = Scatterer()
d = Drawer()

root.add_widget(s)
s.add_widget(d)
print("button is pressed")

class TestApp(App):
def build(self):

return MainWindowWidget()

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

和我的 .kv 文件:

#:kivy 1.0.9

<MainWindowWidget>

Scatterer:
id: scatter2
size: 80, 80
Drawer:
size: scatter2.size
Scatterer:
id: scatter1
size: 80, 80
Drawer:
size: scatter1.size
Button:
text: 'press'
size_hint: None, None
size: 100, 100
pos: 100, 0

on_release: root.addfunction()
<Scatterer>:
do_rotation: False
size_hint: None, None
size: self.size

canvas.after:
Color:
rgba: 1, 1, 0, 0.5
Rectangle:
size: self.size
pos: self.pos

<Drawer>:
size: self.size
canvas:
Color:
rgba: 0, 1, 0, 0.3
Rectangle:
pos: self.pos
size: self.size

最佳答案

root = MainWindowWidget()

您的问题是,您编写了此代码,然后将新的 Scatter 添加到 root,但随后从未对 root 执行任何操作,因此它永远不会显示。

您不想将 Scatterer 添加到 MainWindowWidget,而是添加到当前,其方法正在运行以创建新的 Scatterer。因此,将方法的声明替换为

def addfunction(self, *args):


s = Scatterer()
d = Drawer()

self.add_widget(s)
s.add_widget(d)
print("button is pressed")

关于python - kivy - 绑定(bind)按钮以生成小部件的附加实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26767541/

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