Tkinter调用导入的qwerty函数写Excel缺失参数且数据无法录入求助
问题排查与修复方案
核心报错原因
你触发的TypeError: qwerty() missing 1 required positional argument: 'list'报错是在导入模块阶段触发,不是运行到逻辑代码时触发,说明你的exlsx.py文件顶层有多余的qwerty()无参调用代码,导入模块时会直接执行顶层代码导致报错。
全部需修复的问题点
- 问题1:exlsx.py存在多余的顶层
qwerty()调用,删除该行即可解决导入报错 - 问题2:所有Entry组件未绑定对应的StringVar变量,导致
.get()永远获取空值,需要给每个Entry增加textvariable参数关联对应的StringVar - 问题3:登录逻辑的
qwe函数调用qwerty时传参格式错误,qwerty仅接收1个列表参数,你传了2个独立参数,需要将参数封装为列表后传入 - 问题4:
qwerty函数存在逻辑缺陷:每次调用都会覆盖原有Excel文件,且内部循环会重复写入6次相同数据 - 问题5:传递给
qwerty的列表长度需要和表头8个字段对齐,否则写入会错位
修复后代码
exlsx.py 代码
from openpyxl import Workbook, load_workbook import os def qwerty(data_list): # 补全列表到8个字段长度,对应表头 if len(data_list) < 8: data_list += [""]*(8 - len(data_list)) file_path = 'scamdeaa.xlsx' # 判断文件是否存在,存在就打开追加,不存在就新建写表头 if os.path.exists(file_path): Wors = load_workbook(file_path) Worc = Wors['Scam data'] else: Wors = Workbook() Worc = Wors.create_sheet('Scam data') # 写表头 heaf = ['Username', 'Password','Name', "Mobile", 'Scammed Number of People', 'Total Scammed Amount', 'Email', 'Location'] Worc.append(heaf) # 写入数据 Worc.append(tuple(data_list)) Wors.save(file_path)
主程序核心修改部分
- 所有Entry绑定StringVar示例(全量Entry都要按这个规则改)
# 注册页用户名Entry修改示例 userlvalue = StringVar() Useprid = Entry(RRoot, width=50, textvariable=userlvalue) Useprid.pack(anchor=N) # 注册页密码Entry修改示例 passvalue = StringVar() Usewrid = Entry(RRoot, width=50, textvariable=passvalue) Usewrid.pack(anchor=N) Usewrid.config(show='@') # 其余姓名、手机、邮箱、城市对应的Entry都按上述规则绑定自己的StringVar # 登录页的两个Entry也要对应绑定uservalue和Passvalue
qwe函数修改
def qwe(): s = uservalue.get() blow = Passvalue.get() # 封装为列表传入,剩余字段留空后续补充 qwerty([s, blow])
内容的提问来源于stack exchange,提问作者PRANSHUCODER
相关产品推荐
相关产品推荐

