forループを使用してグリッドレイアウトスクロールビューに一連のボタンを追加しようとしています。しかし、オンプレスイベントは、ボタンを押す前にすべてのボタンに対してトリガされています。これをどうすれば解決できますか?ボタンを押す前にボタンが押されています
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.app import runTouchApp
import webbrowser
def btnsclicked(id, url):
print 'btn id '+id+' clicked'
webbrowser.open(url)
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
layout.bind(minimum_height=layout.setter('height'))
for i in range(5):
url= 'https://www.google.com'
btn = Button(text=str(i), size_hint_y=None, height=40, id='b'+str(i))
btn.bind(on_press =btnsclicked('b'+str(i), url))
layout.add_widget(btn)
root = ScrollView(size_hint=(1, None), size=(Window.width, Window.height))
root.add_widget(layout)
runTouchApp(root)
、どのように私は関数を呼び出すことなく、引数を渡すことができます:あなたは、引数に対処したい場合は、Event dispatcherを参照してください
:試してみてください? – SaikiHanee
は、カスタムコールバックにコールバックを接続するリレー関数であるlamba式を使用しています。 –
ありがとうJean :) – SaikiHanee