我已經想出了如何在 python 檔案中的網格中添加多個標簽,但我正在努力在 for 回圈中為這些標簽添加 id。我嘗試了以下方法,但這似乎不起作用。還請指導我使用 id 訪問這些標簽。非常感謝任何幫助或指導。謝謝
from kivy.uix.textinput import TextInput
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.stacklayout import StackLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.metrics import dp
from kivy.properties import StringProperty
Builder.load_file("gridtable.kv")
class MyBox(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
pass
# for i in range(48):
# self.b = TextInput(multiline=False, font_size=dp(30))
# self.mygrid.add_widget(self.b)
class MyGrid(GridLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.cols=6
self.textinputs = {}
for i in range(48):
key = i 1
self.textinputs[key] = TextInput(multiline=False,font_size=dp(30),on_text=self.calc(key))
self.add_widget(self.textinputs[key])
def calc(self,key):
print(self.textinputs[key])
class MyApp(App):
def build(self):
return MyBox()
if __name__ == "__main__":
MyApp().run()
<MyBox>:
mygrid:my_grid
orientation: "vertical"
MyGrid:
id: my_grid
size_hint: 1,0.8
BoxLayout:
orientation: "horizontal"
size_hint: 1,0.2
BoxLayout:
orientation: "vertical"
Button:
text: "Expense Total:"
Button:
text: "Revenue Total:"
Button:
text: "Profit:"
font_size: 40
Traceback (most recent call last):
File "c:\Users\jaika\OneDrive\Desktop\python\lil_curry_project\gridtable.py", line 38, in <module>
MyApp().run()
print(self.textinputs[key])
KeyError: 1
uj5u.com熱心網友回復:
我嘗試了以下方法,但這似乎不起作用。
當某些事情不起作用時,您應該發布失敗的方式/原因的詳細資訊。例如,它是否會因回溯而崩潰?
還請指導我使用 id 訪問這些標簽
kivyid使用的 僅通過 kv 語言設定,它具有特定于設定它的 kv 規則的本地行為。
由于您在 python 中創建小部件,因此您不需要設定 id,您可以將它們存盤在串列或字典或您喜歡的任何其他東西中。例如,您可以self.textinputs = {}為每個設定 then self.textinputs[i] = TextInput(...); self.add_widget(self.textinputs[i])。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461288.html
上一篇:在資料框python中減去兩行值
