Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在KivyMD';.py文件中的MDS卡_Python 3.x_Kivy_Kivymd_Md Card - Fatal编程技术网

Python 3.x 如何在KivyMD';.py文件中的MDS卡

Python 3.x 如何在KivyMD';.py文件中的MDS卡,python-3.x,kivy,kivymd,md-card,Python 3.x,Kivy,Kivymd,Md Card,我想在kivyMD的MD卡中放置一个异步映像,但由于某种原因,该卡在x方向上使用pos\u hint正确定位,但在y方向上不起作用 代码 从kivymd.app导入MDApp 从kivymd.uix.screen导入屏幕 从kivymd.uix.boxlayout导入MDBoxLayout 从kivymd.uix.label导入MDLabel 从kivymd.uix.button导入MDRectangleFlatButton 从kivymd.uix.card导入MDCard、MDSeparato

我想在kivyMD的MD卡中放置一个异步映像,但由于某种原因,该卡在x方向上使用
pos\u hint
正确定位,但在y方向上不起作用

代码
从kivymd.app导入MDApp
从kivymd.uix.screen导入屏幕
从kivymd.uix.boxlayout导入MDBoxLayout
从kivymd.uix.label导入MDLabel
从kivymd.uix.button导入MDRectangleFlatButton
从kivymd.uix.card导入MDCard、MDSeparator
从kivy.lang导入生成器
从kivy.metrics导入dp
从kivy.uix.image导入异步映像
生成器。加载\u字符串(“”)
:
MDBoxLayout:
在以下情况之前:
颜色:
rgba:1,0,0,1#红色
矩形:
大小:self.size
pos:self.pos
方向:'垂直'
位置提示:{'center_x':.5'center_y':.4}
尺寸提示:(.75,.6)
滚动视图:
在以下情况之前:
颜色:
rgba:0,1,0,5#绿色
矩形:
大小:self.size
pos:self.pos
是否滚动\u x:False
是否滚动y:正确
位置提示:{'center_x':0.5,'center_y':0.5}
尺寸提示:(0.5,1)
MDBoxLayout:
在以下情况之前:
颜色:
rgba:0,0,1,5
矩形:
大小:self.size
pos:self.pos
方向:'垂直'
id:集装箱
大小提示y:None#这会使内容滚动到O.O
高度:自身最小高度
间距:10
MDRectangleFlatButton:
文字:“按我”
位置提示:{'center_x':0.5,'center_y':.8}
发布时:root.printing()
""")
类AppScreen(屏幕):
定义初始(自我,**kwargs):
超级(AppScreen,self)。\uuuuu初始化(**kwargs)
self.scroll\u id=self.ids.container
def打印(自):
对于范围(5)内的x:
img=异步映像(
来源=”https://i.redd.it/x1js663rq7s41.jpg",
pos_hint={'center_x':0.9,'center_y':0.5},
大小提示y=无,
尺寸=(dp(20)和dp(30))
)
卡片=MDCard(
方向='垂直',
pos_hint={'center_x':0.5},
大小提示=(1,无),
#大小=(dp(100),dp(100))#查看卡片中的内容需要大小
)
card.add_小部件(img)
self.scroll\u id.add\u小部件(卡)
类DemoApp(MDApp):
def生成(自):
self.theme\u cls.theme\u style=“黑暗”
返回AppScreen()
DemoApp().run()

我在MD卡中使用了另一个
屏幕
,并将异步映像作为子对象添加到创建为
布局

注意:
如果MD卡中有多个小部件,则可能需要使用GridLayout或BoxLayout。(GridLayout忽略其子项的位置和大小提示)

解决方案:
from kivymd.app import MDApp
from kivymd.uix.screen import Screen
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel
from kivymd.uix.button import MDRectangleFlatButton
from kivymd.uix.card import MDCard, MDSeparator

from kivy.lang import Builder
from kivy.metrics import dp
from kivy.uix.image import AsyncImage

Builder.load_string("""
<AppScreen>:
    MDBoxLayout:
        canvas.before:
            Color:
                rgba:1,0,0,1 #Red
            Rectangle:
                size:self.size
                pos:self.pos

        orientation:'vertical'
        pos_hint: {'center_x':.5, 'center_y':.4}
        size_hint: (.75, .6)

        ScrollView:
            canvas.before:
                Color:
                    rgba: 0,1,0,.5 #Green
                Rectangle:
                    size:self.size
                    pos:self.pos 
            do_scroll_x:False
            do_scroll_y:True
            pos_hint:{'center_x':0.5, 'center_y':0.5}
            size_hint:(0.5,1)
            MDBoxLayout:
                canvas.before:
                    Color:
                        rgba: 0,0,1,.5
                    Rectangle:
                        size:self.size
                        pos:self.pos 
                orientation:'vertical'
                id:container
                size_hint_y:None #This makes the stuff scroll O.o
                height:self.minimum_height
                spacing:10

    MDRectangleFlatButton:
        text:"Press Me"
        pos_hint:{'center_x':0.5, 'center_y':.8}
        on_release:root.printing()
""")

class AppScreen(Screen):
    def __init__(self, **kwargs):
        super(AppScreen, self).__init__(**kwargs)
        self.scroll_id = self.ids.container
    def printing(self):
        for x in range(5):
            img=AsyncImage(
                source="https://i.redd.it/x1js663rq7s41.jpg",
                pos_hint={'center_x':0.9, 'center_y':0.5},
                size_hint_y=None,
                size=(dp(20), dp(30))
                )
            card = MDCard(
                orientation='vertical',
                pos_hint={'center_x':0.5},
                size_hint=(1, None),
                #size=(dp(100), dp(100)) #Size is required to view stuff in Cards

            )
            card.add_widget(img)
            self.scroll_id.add_widget(card)
class DemoApp(MDApp):
    def build(self):
        self.theme_cls.theme_style="Dark"
        return AppScreen()

DemoApp().run()
    def __init__(self, **kwargs):
        super(AppScreen, self).__init__(**kwargs)
        self.scroll_id = self.ids.container
    def printing(self):
        for x in range(5):

            #New screen as a child of MDCard
            layout = Screen(
                pos_hint={'center_x':0.5},
                size_hint=(1,None)

            )

            img=AsyncImage(
                source="https://i.redd.it/x1js663rq7s41.jpg",
                pos_hint={'center_x':0.5, 'center_y':0.6},
                size_hint = (.5,.5)
                )

            card = MDCard(
                orientation='vertical',
                pos_hint={'center_x':0.5},
                size_hint=(1, None),
                #size=(dp(100), dp(100)) #Size is required to view stuff in Cards

            )
            layout.add_widget(img)
            card.add_widget(layout)
            self.scroll_id.add_widget(card)