Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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 如何使用kivy在scrollview中定位按钮_Python_Kivy - Fatal编程技术网

Python 如何使用kivy在scrollview中定位按钮

Python 如何使用kivy在scrollview中定位按钮,python,kivy,Python,Kivy,我在滚动视图的gridlayout中有一些垂直移动的按钮。我一直试图将这些按钮放置在不同的位置,但它们没有改变。请问如何将这些按钮定位在不同的x和y坐标。我使用了floatlayout,但它不适用于ScrollView(),为什么 import kivy kivy.require('1.8.0') from kivy.app import App from kivy.uix.button import Button from kivy.uix.scrollview import ScrollV

我在滚动视图的gridlayout中有一些垂直移动的按钮。我一直试图将这些按钮放置在不同的位置,但它们没有改变。请问如何将这些按钮定位在不同的x和y坐标。我使用了floatlayout,但它不适用于ScrollView(),为什么

import kivy
kivy.require('1.8.0')

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout


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

        grid = GridLayout(cols=2, spacing=90, size_hint=(None,None))   
        grid.bind(minimum_height=grid.setter('height'))
   

            btn1=Button(text='1', size=(90,90), size_hint=(None,None), pos_hint={'center_x':.5, 'center_y': 6})
            btn2=Button(text='1', size=(90,90), size_hint=(None,None), pos_hint={'center_x':.5, 'center_y': 2})
            btn3=Button(text='1', size=(90,90), size_hint=(None,None), pos_hint={'center_x':.5, 'center_y':.9})

        grid.add_widget(btn1)
         grid.add_widget(btn2)
         grid.add_widget(btn3)

# pos_hint={center_x and center_y} not working 
        scroll = ScrollView( size_hint=(1, 1), do_scroll_x=False, do_scroll_y=True, scroll_type=['content'])
        scroll.effect_cls= 'ScrollEffect'
        scroll.add_widget(grid)

        return scroll


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

为此,您可以自己输入x和y坐标:

for i in range(15):
        a = float(input(f"Enter X postion value for #00{i}: "))
        b = float(input(f"Enter Y postion value for #00{i}: "))
        screen.add_widget(Button(text='#00' + str(i), size=(90,90), size_hint=(None,None),pos_hint={'center_x':a, 'center_y':b} ))

您可以
导入随机
并设置不同的值,或使用“for”循环插入不同的顺序值。我在这里向您展示以下“随机”示例:

        for i in range(15):
            a = random.randrange(0,10)
            b = random.randrange(1,20)
            screen.add_widget(Button(text='#00' + str(i), size=(90,90), size_hint=(None,None),pos_hint={'center_x':a, 'center_y':b} ))

我希望这对你有帮助。我不确定这里网格布局的用法。您尝试删除网格布局,并仅将这些按钮放置在不同的坐标上,因为您已为网格布局中可能影响输出显示的按钮间距提供了值。所以,我希望它对你有用。快乐编码…

为此,您可以自己输入x和y坐标:

for i in range(15):
        a = float(input(f"Enter X postion value for #00{i}: "))
        b = float(input(f"Enter Y postion value for #00{i}: "))
        screen.add_widget(Button(text='#00' + str(i), size=(90,90), size_hint=(None,None),pos_hint={'center_x':a, 'center_y':b} ))
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.screenmanager import Screen, ScreenManager
import random


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

           screen = Screen()

           for i in range(3):
                   a = float(input(f"Enter X postion value for #00{i}: "))
                   b = float(input(f"Enter Y postion value for #00{i}: "))
                   screen.add_widget(Button(text='#00' + str(i), size=(90,90), size_hint=(None,None),pos_hint={'center_x':a, 'center_y':b} ))

              return screen

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

您可以
导入随机
并设置不同的值,或使用“for”循环插入不同的顺序值。我在这里向您展示以下“随机”示例:

        for i in range(15):
            a = random.randrange(0,10)
            b = random.randrange(1,20)
            screen.add_widget(Button(text='#00' + str(i), size=(90,90), size_hint=(None,None),pos_hint={'center_x':a, 'center_y':b} ))
我希望这对你有帮助。我不确定这里网格布局的用法。您尝试删除网格布局,并仅将这些按钮放置在不同的坐标上,因为您已为网格布局中可能影响输出显示的按钮间距提供了值。所以,我希望它对你有用。快乐编码

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.screenmanager import Screen, ScreenManager
import random


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

           screen = Screen()

           for i in range(3):
                   a = float(input(f"Enter X postion value for #00{i}: "))
                   b = float(input(f"Enter Y postion value for #00{i}: "))
                   screen.add_widget(Button(text='#00' + str(i), size=(90,90), size_hint=(None,None),pos_hint={'center_x':a, 'center_y':b} ))

              return screen

if __name__ == '__main__':
       ScrollViewApp().run()
这个很好用。我希望这能帮助你


这个很好用。我希望这将帮助您……

感谢您的回复,但代码不起作用,按钮没有改变位置,我认为pos_提示对scrollview不起作用。所以,我如何定位一个按钮,以及我可以在scrollview中使用哪种布局来实现这一点?不要使用scrollview和gridlayout,它会工作的。我添加了代码作为另一个答案。感谢您的回复,但是代码不起作用,按钮没有改变位置,我认为pos_提示对scrollview不起作用。所以,我如何定位一个按钮,以及我可以在scrollview中使用哪种布局来实现这一点?不要使用scrollview和gridlayout,它会工作的。我添加了代码作为另一个答案。请确保pos_hint的值介于0到1之间。感谢您的回复,您似乎没有收到我的回复。我使用的是“ScrollView()”,这意味着屏幕将垂直向上滚动。所以我的问题是如何在ScrollView中的不同位置放置不同的按钮。(没有for循环)如果我能得到一个示例代码,我将不胜感激。感谢确保pos_提示的值在0到1之间。感谢您的回复,似乎您没有收到我的回复。我使用的是“ScrollView()”,这意味着屏幕将垂直向上滚动。所以我的问题是如何在ScrollView中的不同位置放置不同的按钮。(没有for循环)如果我能得到一个示例代码,我将不胜感激。谢谢