Python 如何使用kivy在scrollview中定位按钮
我在滚动视图的gridlayout中有一些垂直移动的按钮。我一直试图将这些按钮放置在不同的位置,但它们没有改变。请问如何将这些按钮定位在不同的x和y坐标。我使用了floatlayout,但它不适用于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
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循环)如果我能得到一个示例代码,我将不胜感激。谢谢