簡體   English   中英

Kivy:在網格中分配動作/分類按鈕

[英]Kivy: assigning actions/classifying buttons in grid

我在向kivy中放入網格的按鈕分配動作時遇到了問題。 任何幫助,將不勝感激。

我是所有編碼的新手,但我一直在努力解決這個問題。 我嘗試為按鈕指定一個名稱,但它不起作用,因為'on_press'功能不適用於字符串,只適用於按鈕。 有什么方法可以將我的字符串從網格中分類為按鈕,還是我做錯了什么? 我希望每個按鈕執行不同的操作,因此它們不能被歸類為同一個東西。

這是我的代碼:

    import kivy 
kivy.require('1.10.0') 
from kivy.uix.gridlayout import GridLayout 
from kivy.app import App 
from kivy.core.window import Window 
from kivy.uix.button import Button


    class MyApp(App):

        def build(self):
            def callback(instance):
                print('The button 1 is being pressed' % instance.text)

            # test 1: I dont think this works because it doesn't work with the grid structure but I tried it anyways
    # btn1 = Button(background_color=blue, text='a', size_hint_x=None, width=butw)

    # test 2: I don't think it works because it is not classified as a button, but a string.
    # btn1 = "layout.add_widget(Button(background_color=blue, text='a', size_hint_x=None, width=butw))"

            btn1.bind(on_press=callback)

            layout = GridLayout(cols=1, rows=28, row_force_default=True, row_default_height=buth)
            layout.add_widget(Button(background_color=blue, text='a', size_hint_x=None, width=butw))
            layout.add_widget(Button(background_color=blue2, text='b', size_hint_x=None, width=butw))
            layout.add_widget(Button(background_color=blue, text='c',  size_hint_x=None, width=butw))
    # cont.
            return layout

    MyApp().run()

謝謝,瑞恩

因此,在第12行, print('The button 1 is being pressed' % instance.text)您正在嘗試格式化字符串,但您沒有指定放置實例文本的位置。 否則,這段代碼我編輯了一點(下次請從示例中刪除所有不需要的代碼)工作正常,按下“a”按鈕時打印:

import kivy 
kivy.require('1.10.0') 
from kivy.uix.gridlayout import GridLayout 
from kivy.app import App 
from kivy.uix.button import Button


class MyApp(App):

    def build(self):
        def callback(instance):
            print('The button 1 is being pressed',  instance.text)

        # test 1: I dont think this works because it doesn't work with the grid structure but I tried it anyways
        btn1 = Button(text='a', size_hint_x=None, width=30)

        btn1.bind(on_press=callback)

        layout = GridLayout(cols=1, rows=28)
        layout.add_widget(btn1)
        layout.add_widget(Button(text='b', size_hint_x=None, width=30))
        layout.add_widget(Button(text='c',  size_hint_x=None, width=30))

        return layout

MyApp().run()

應用程序正常

對其他具有其他功能的按鈕執行相同操作即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM