簡體   English   中英

將動態創建的按鈕引用到相應的標簽 Kivy Python

[英]Referencing Buttons Created Dynamically to a Corresponding Lable Kivy Python

一些背景:我的應用程序中的一個屏幕以度-分-秒為單位顯示角度值。 這些值是在您進入屏幕時創建的 MDLabels,這些值取決於用戶在上一個屏幕中給出的 MDTextFields 值。 角度的數量取決於詢問用戶有多少點的第一個屏幕。 因此,如果有 5 個點,則將有 5 個角度,每個角度都有不同的度-分-秒文本輸入。 每個角度都是一個包含 3 個值(度、分和秒)的列表,每個角度都存儲在一個稱為角度的列表中。 所以這是一個二維列表情況,可以幫助我進行計算。

現在問題來了:在這個屏幕中,我的目標是讓用戶通過按下 + 和 - 按鈕來調整角度,這樣每次按下都會將秒值增加/減少一。 我遇到的問題是將按鈕引用到角度 - 例如,如果我按下第二個角度的 + 按鈕,它只會在第二個角度上增加一秒。 我只是不知道如何以這種方式編寫 plus()/minus() 方法。

class AngleAdjustment(Screen):
def on_enter(self, *args):
    self.adj_angle_widgets = []
    self.adj_angles_widgets = []
    self.minus_buttons = []
    self.plus_buttons = []
    angle_number = 0
    for angle in angles:
        angle_number += 1
        self.angle_to_adjust_title = MDLabel(text="Angle " + str(angle_number), font_size=20, halign="center") #Adds title to each angle
        self.angle_adjustment_gridlayout = MDGridLayout(cols=5, spacing="10dp", padding="10dp", adaptive_height=True) # Puts everything and angle needs within a gridlayout
        self.minus_button = MDIconButton(icon="minus-circle", user_font_size="40sp")
        self.degrees_to_adjust = MDLabel(text=str(angle[0]), halign="center") # Gets user input from previous screen
        self.minutes_to_adjust = MDLabel(text=str(angle[1]), halign="center") # Gets user input from previous screen
        self.seconds_to_adjust = MDLabel(text=str(angle[2]), halign="center") # Gets user input from previous screen
        self.plus_button = MDIconButton(icon="plus-circle", user_font_size="40sp")

        self.adj_angle_widgets = [int(self.degrees_to_adjust.text),
                                  int(self.minutes_to_adjust.text),
                                  int(self.seconds_to_adjust.text)]

        self.adj_angles_widgets.append(self.adj_angle_widgets)

        self.minus_buttons.append(self.minus_button)
        self.plus_buttons.append(self.plus_button)

        self.angle_adjustment_gridlayout.add_widget(self.minus_button)
        self.angle_adjustment_gridlayout.add_widget(self.degrees_to_adjust)
        self.angle_adjustment_gridlayout.add_widget(self.minutes_to_adjust)
        self.angle_adjustment_gridlayout.add_widget(self.seconds_to_adjust)
        self.angle_adjustment_gridlayout.add_widget(self.plus_button)

        self.ids.angle_adjustment.add_widget(self.angle_to_adjust_title) # Adding the widgets to the MDBoxLayout written in the KV file
        self.ids.angle_adjustment.add_widget(self.angle_adjustment_gridlayout) # Adding the widgets to the MDBoxLayout written in the KV file

        self.minus_button.bind(on_press=self.minus) # Binding the minus button
        self.plus_button.bind(on_press=self.plus) # Binding the plus button

用戶輸入角度值用戶調整角度值

我實際上能夠弄清楚這一點,供任何人參考。 我不知道按鈕狀態選項 - 有一些時間閱讀文檔:

    def minus(self, btn):
        for i in range(N):
            if self.minus_buttons[i].state == "down":
                print(f'minus button {i+1} is down')

    def plus(self, btn):
        for i in range(N):
            if self.plus_buttons[i].state == "down":
                print(f'plus button {i+1} is down')

從這里開始,我可以根據點擊的按鈕進行計算!

暫無
暫無

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

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