繁体   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