簡體   English   中英

Pylance 未訪問 for 循環中的變量

[英]Variable in for loop not accessed by Pylance

我正在 python 中創建一個應用程序,該應用程序可以訪問 excel 文件以讀取和寫入數據。 Excel 文件有工作日,用戶將讀取或寫入它們旁邊的單元格。 下面,我寫了一些循環來檢查用戶是否未保存一些更改。 如果某一天的單元格有未保存的更改,則應用程序內的 label 會更改以將其指出給用戶。

喜歡:星期一->星期一*

“kvlabel”,由於某種原因保持較深的顏色,將鼠標懸停在它上面表明 Pylance 沒有訪問它。 我更改了它的名稱和 position 但它沒有任何區別。

daytexts = [
    self.root.get_screen("weeklywin").ids.mon_text.text, 
    self.root.get_screen("weeklywin").ids.tue_text.text, 
    self.root.get_screen("weeklywin").ids.wed_text.text, 
    self.root.get_screen("weeklywin").ids.thu_text.text, 
    self.root.get_screen("weeklywin").ids.fri_text.text
    ]

cells = [e4, e10, e16, e22, e28]

daylabel = ["mon_label", "tue_label", "wed_label", "thu_label", "fri_label"]

daylabelkv = [
    self.root.get_screen("weeklywin").ids.mon_label.text, 
    self.root.get_screen("weeklywin").ids.tue_label.text, 
    self.root.get_screen("weeklywin").ids.wed_label.text, 
    self.root.get_screen("weeklywin").ids.thu_label.text, 
    self.root.get_screen("weeklywin").ids.fri_label.text
    ]

justday = ["Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma"]

for day, cell, label in zip(daytexts, cells, daylabel):
    if day != cell and label not in self.excel_unsaved_label:
        self.excel_unsaved_label.append(label)
    elif day == cell and label in self.excel_unsaved_label:
        self.excel_unsaved_label.remove(label)
        
if self.excel_unsaved_label:
    self.show_excel_leave_warn()
    for label2, kvlabel, tehday in zip(daylabel, daylabelkv, justday):
        if label2 in self.excel_unsaved_label:
            kvlabel = tehday+"*"
        else:
            kvlabel = tehday
                    
else:
    self.root.current = caller

就像@slothrop 建議的那樣,我從daylabelkv中刪除了.text

daylabelkv = [
    self.root.get_screen("weeklywin").ids.mon_label, 
    self.root.get_screen("weeklywin").ids.tue_label, 
    self.root.get_screen("weeklywin").ids.wed_label, 
    self.root.get_screen("weeklywin").ids.thu_label, 
    self.root.get_screen("weeklywin").ids.fri_label]

並像這樣更改循環:

for label2, i, tehday in zip(daylabel, range(len(daylabelkv)), justday):
    if label2 in self.excel_unsaved_label:
        daylabelkv[i].text = tehday+"*"

它做我現在想要的。 謝謝大家的幫助。

暫無
暫無

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

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