亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Kivy - 為什么這種不相關(看似)的按鈕狀態變化會影響清除列表的能力?

Kivy - 為什么這種不相關(看似)的按鈕狀態變化會影響清除列表的能力?

泛舟湖上清波郎朗 2023-04-18 15:29:29
有誰知道這里發生了什么?目標:有很多按鈕。單擊兩個,它們都單獨將一個項目附加到一個空列表中。當列表的 len 為 2 時(單擊 2 個不同的按鈕后)如果兩個項目不相同,則清除/清空列表。如果兩項相同,則清除/清空列表,并禁用這兩個按鈕。這里的想法是記憶游戲。這些按鈕一開始是空白的,您單擊它,它們會顯示文本,而該文本就是附加到列表中的項目。問題:如果附加的兩個項目匹配,它會按預期禁用按鈕,但不會再清空/清除列表。為什么?使用屏幕也很重要,因為它將成為不同應用程序中許多人之間的屏幕。相關部分                the_btn[0].text = ''                the_btn[1].text = ''                pairs.clear()                the_btn.clear()            elif pairs[0] == pairs[1]:                the_btn[0].disabled = True                the_btn[1].disabled = True                pairs.clear()                the_btn.clear()完整代碼:from kivy.app import Appfrom kivy.lang import Builderfrom kivy.uix.screenmanager import Screen, ScreenManagerBuilder.load_string("""<ScreenOne>:    StackLayout:        Button:            id: btn_1            text:''            size_hint: 0.2, 0.15            on_release:                 root.b1()                root.check()        Button:            id: btn_2            text:''            size_hint: 0.2, 0.15            on_release:                 root.b2()                root.check()        Button:            id: btn_3            text:''            size_hint: 0.2, 0.15            on_release:                 root.b3()                root.check()        Button:            id: btn_4            text:''            size_hint: 0.2, 0.15            on_release:                 root.b4()                root.check()        Button:            id: exit            text:'exit'            size_hint: 1, 0.15             on_release: app.stop()""")class ScreenOne(Screen):    def b4(self):        b4 = self.ids['btn_4']             b4.text = 'K'    def b3(self):        b3 = self.ids['btn_3']             b3.text = 'K'    def b2(self):        b2 = self.ids['btn_2']             b2.text = 'L'    def b1(self):        b1 = self.ids['btn_1']             b1.text = 'L'    def check(self):        buttons = [(self.ids['btn_1']), (self.ids['btn_2']), (self.ids['btn_3']), (self.ids['btn_4'])]        pairs = []        the_btn = []  
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

我相信問題不在于列表沒有被清除(它正在被清除),而是每次執行都會check()將它們添加回列表中。我認為如果您將方法中列表的初始編譯限制check()為 non-disabled Buttons,它應該可以按您的意愿工作:


def check(self):

    buttons = [(self.ids['btn_1']), (self.ids['btn_2']), (self.ids['btn_3']), (self.ids['btn_4']),

               (self.ids['btn_5']), (self.ids['btn_6'])]

    pairs = []

    the_btn = []


    for x in buttons:

        if not x.disabled:  # ignore disabled buttons

            pairs.append(x.text)

            if x.text != '':

                the_btn.append(x)


查看完整回答
反對 回復 2023-04-18
  • 1 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號