【问题标题】:Kivy Python - previously created layouts aren't displayed in scroll view and in page layoutKivy Python - 以前创建的布局不会显示在滚动视图和页面布局中
【发布时间】:2021-06-15 09:11:23
【问题描述】:

这段代码让我黑屏,我做错了什么?

python 文件:

from kivy.app import App
from kivy.metrics import dp
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.stacklayout import StackLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.pagelayout import PageLayout

class myPageLayout(PageLayout):
    pass
class myScrollView(ScrollView):
    pass
class myStackLayout(StackLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        for i in range(1,101):
            size=dp(100)
            b= Button(text=str(i),size_hint=(None,None),size=(size,size))
            self.add_widget(b)
class myGridLayout(GridLayout):
    pass
class myAnchorLayout(AnchorLayout):
    pass
class myBoxLayout(BoxLayout):
    pass
class myWidget(Widget):
    pass
class gameApp(App):
    pass


gameApp().run()

kivy 文件:

myPageLayout:

<myBoxLayout>:
    orientation: "horizontal"
    spacing: "10dp"
    Button:
        text: "ciao"
        size_hint: 1,.5
        size: "10dp","10dp"        
        pos_hint: { "y": .5 }

    BoxLayout:
        orientation: "vertical"
        spacing: "10dp"
        Button:
            text: "b1"
        Button:
            text: "b2"
        Button:
            text: "b3"
        
    Button:
        text: "hi2"

<myWidget>:
    Button:
        text: "hi"
        size: "100dp","20dp"
        pos: 300, 100
<myAnchorLayout>:
    #anchor_x: "right"
    anchor_y: "bottom"
    BoxLayout:
        size_hint: .1,.1
        Button:
            text: "hi"
        Button:
            text: "hi2"
<myGridLayout>:
    cols: 3
    rows: 3
    Button:
        text:"hi"
        size_hint:.5,1
    Button:
        text:"hi"
    Button:
        text:"hi"
    myAnchorLayout:
        size_hint:.5,1
    Button:
        text:"hi"
    myBoxLayout:
    Button:
        text:"hi"
        size_hint:.5,1
    myWidget:
    Button:
        text:"hi"
<myStackLayout>:
    #orientation:"tb-lr"
    #padding:("20dp","20dp","20dp","20dp")
    #spacing: "10dp","10dp"
    

<myScrollView>:
    myStackLayout:
        size_hint:1,None
        height: self.minimum_height


<myPageLayout>:
    myBoxLayout:
    myAnchorLayout:
    myWidget:
    myGridLayout:

即使像“myAnchorLayout”和“myGridLayouts”那样嵌入,也可以单独使用布局。

我也尝试以这种方式在“myScrollView”中创建一个新的 StackLayout:

<myScrollView>:
    StackLayout:
        size_hint:1,None
        height: self.minimum_height
        Button:
            text:"hi"
            size_hint:.7,None
            height:"500dp"
        Button:
            text:"hi"
            size_hint:.7,None
            height:"500dp"

它工作了,但现在它不再工作了,这也附加了“myPageLayout”。

【问题讨论】:

  • 我对 kiwi 不是很熟悉,但是用from import ... * 或import... 导入所有内容会不会更容易
  • 可以使用 from ... import* 但变化不大

标签: python python-3.x kivy kivy-language


【解决方案1】:

问题在于kv 语言坚持类名以大写字母开头。 documentation 说:

保持类名大写以避免语法错误

如果您更改所有类名以满足该要求,我认为您的代码将起作用。

.

【讨论】:

    猜你喜欢
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多