以下是我正在使用的示例代碼。
我正在創建一個預先設定的按鈕數量,每個按鈕都有自己的 ID 號碼。
我正在創建一個預設數量的按鈕,每個按鈕都有自己的ID號碼,基于for回圈
。
所有的按鈕在被按下時都有相同的功能
我的目標是獲得被按下的按鈕的ID名稱
目前,我的代碼正在列印出特定的物件地址(?),例如 0xAABBCCEE
我想知道如何列印出ID格式的代碼,如 "Button 3"
class MainScreen(GridLayout)。
def __init__(self, **kwargs)。
super(MainScreen, self).__init__(**kwargs)
self.cols = 13
#for回圈創建不同ID的按鈕。
NumberToCreate = 4
for x in range(int(NumberToCreate))。
aButton = Button(text='button text ' str(x), on_press=self.press_auth)
MainScreenLayout.add_widget(aButton)
self.ids['button' str(x)] = aButton
self.add_widget(MainScreenLayout)
#function for when button is pressed[/span].
def press_auth(self, instance)。
print(str(instance)) #ulimate goal is get ID name and x number, to use later in code[/span].
class MyApp(App)。
def build(self)。
return MainScreen()
if __name__== '__main__'/span>:
MyApp().run()
uj5u.com熱心網友回復:
kivy中的ID通常與kv檔案一起使用,通過繼承來跟蹤物件。你可能不應該像你那樣使用實體變數ids作為setter,因為它通常是在kivy內部設定的,并由開發者作為getter使用。
要實作您的愿望,更簡單的方法是在每個 Button 實體上設定一個任意變數,并跟蹤那里的差異。如果你打算使用深度繼承,這就是你想使用 ids 的原因,那么我將在將其添加到 MainScreen 之前在實體上設定 id。
第一種方式可以簡單地這樣做:
class MainScreen(GridLayout)。
def __init__(self, **kwargs)。
super(MainScreen, self).__init__(**kwargs)
self.cols = 13
#for回圈創建不同ID的按鈕。
NumberToCreate = 4
for x in range(int(NumberToCreate))。
aButton = Button(text='button text ' str(x), on_press=self.press_auth)
aButton.my_id = x # or 'button' str(x) or whatever you want to use to track buttons。
MainScreenLayout.add_widget(aButton)
self.add_widget(MainScreenLayout)
#function for when button is pressed 當按鈕被按下時的函式
def press_auth(self, instance)。
print(str(instance.my_id)) #ulimate goal is get ID name and x number, to use later in code[/span].
class MyApp(App)。
def build(self)。
return MainScreen()
if __name__== '__main__'/span>:
MyApp().run()
uj5u.com熱心網友回復:
這對你來說應該是可行的
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
class MainScreen(GridLayout)。
def __init__(self, **kwargs)。
super(MainScreen, self).__init__(**kwargs)
self.cols = 13
# for loop創建不同ID的按鈕。
NumberToCreate =4
for x in range(int(NumberToCreate))。
aButton = Button(text='button text ' str(x), on_press=self.press_auth)
MainScreenLayout.add_widget(aButton)
# let us make the id similar to the text to simplify the searching'button text ' str(x)] = aButton
self.add_widget(MainScreenLayout)
# function for when button is pressed[/span].
def press_auth(self, instance)。
# 在這里我們可以用按鈕文本來指責按鈕ID。
print(self.ids[instance.text])
class MyApp(App)。
def build(self)。
return MainScreen()
if __name__ == '__main__'/span>:
MyApp().run()
Update
你不能通過按鈕實體獲得ID,因為它被存盤為MainScreen ids,我的例子是告訴你如何使用實體的一個屬性來獲得一個實體,比如text
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/320730.html
標籤:
下一篇:ReactJS-多個按鈕
