gpt4 book ai didi

python - 向 Kivy 添加小部件时如何确保功能正常

转载 作者:行者123 更新时间:2023-12-01 07:33:36 25 4
gpt4 key购买 nike

我正在尝试创建一个 Kivy/Python 应用程序,它让用户在一个屏幕上按下按钮,然后将几个小部件添加到下一个屏幕。但是,当我运行脚本时,按钮出现并可以在第一页上单击,小部件在第二页上可见,但无法与之交互。

这是我的代码示例,感谢任何帮助:

py:

import kivy
kivy.require('1.11.1')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ListProperty, StringProperty, ObjectProperty
from kivy.core.window import Window
from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView
from kivy.uix.button import Button
from kivy.uix.spinner import Spinner

sm = None

class RcGUITestApp(App):
def build(self):
global sm
Window.clearcolor = (0, 0, 0.35, 1)
sm = ScreenManager()
sm.add_widget(NewJobPage(name="new_job_page"))
sm.add_widget(IPMConfirmPage(name = "ipm_confirm_page"))
return sm

class NewJobPage(Screen):
def retrieve(self):
global rc
global sm
sm.get_screen("ipm_confirm_page").displayIPM()

class IPMConfirmPage(Screen):
grid = ObjectProperty(None)

def displayIPM(self):
for ipm in range(50):
self.grid.add_widget(Label(text="A"))
self.grid.add_widget(Spinner(text="B"))
self.grid.add_widget(Spinner(text="C"))

def main():
rc_gui = RcGUITestApp()
rc_gui.run()

if __name__ == "__main__":
main()

kv:

<NewJobPage>:
BoxLayout:
orientation: "horizontal"
size_hint: (1, .35)

Button:
text: "RETRIEVE"
pos_hint: {"center_x": .5, "center_y": .5}
size_hint: (.33, .33)
color: (1,1,1,1)
on_press:
root.retrieve()
root.manager.transition.direction = "left"
root.manager.transition.duration = .8
root.manager.current = "ipm_confirm_page"

<IPMConfirmPage>:
grid: Grid
GridLayout:
cols: 1
size_hint_x: 1
padding: 10
spacing: 10

BoxLayout:
size_hint: (1, 0.1)

Label:
text: "IPM"
Label:
text: "CD#"
Label:
text: "CONDUCTOR"

ScrollView:

GridLayout:
id: Grid
cols: 3
height: self.minimum_height
size_hint: 1, None
spacing: 50
padding: 30

首页输出

First Page output

第二页输出

Second Page output

最佳答案

您需要提供添加到网格中的每个小部件的高度。该问题有两种解决方案。

方法1 - kv文件

此方法仅通过添加 row_force_default: Truerow_default_height: 40 更改 kv 文件。

片段 - kv 文件

    ScrollView:

GridLayout:
row_force_default: True
row_default_height: 40
...

方法2-py文件

此方法仅通过添加 size_hint_y=Noneheight=40 更改 py 文件。

片段

def displayIPM(self):
for ipm in range(50):
self.grid.add_widget(Label(text="A", size_hint_y=None, height=40))
self.grid.add_widget(Spinner(text="B", size_hint_y=None, height=40))
self.grid.add_widget(Spinner(text="C", size_hint_y=None, height=40))

关于python - 向 Kivy 添加小部件时如何确保功能正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57102258/

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