开发者社区> 问答> 正文

缺少1个必需的位置参数:“ self”且没有属性长度

我正在为PC做一​​个愚蠢的“抗冠状病毒”。这是代码:

import tkinter as tk
from tkinter import \*        from tkinter import ttk
import random
window=Tk()
window.geometry('500x500')
window.resizable(False, False)
window.title('Anti Corona')
window.config(bg='light blue')
anti=tk.Label(text='Anti Corona')
anti.config(bg='light blue', font=('Arial black', 50))
anti.pack()
anti2=tk.Label(text='')
anti2.config(bg='light blue', font=('Arial black', 100))
anti2.pack()
def scaner(self):
    self.f1=tk.Frame()
    self.f1.pack()
    self.progress=ttk.Progressbar(f1)
    self.progress.length(50)
    self.progress.pack() 
scan=tk.Button(window, text='Scan!')
scan.config(height=1, width=10, font=('Century gothic', 30, 'bold'), bg='green', disabledforeground='', command=scaner())
scan.pack()

window.mainloop()

问题是它输出一个错误:

Traceback (most recent call last):
  File "C:\Users\cicle.EAAULAINF1W-008\Desktop\Anticorona.py", line 23, in <module>
    scan.config(height=1, width=10, font=('Century gothic', 30, 'bold'), bg='green', disabledforeground='', command=scaner())
TypeError: scaner() missing 1 required positional argument: 'self'

但是当我退出def中的所有self时,输出为:

Traceback (most recent call last):
  File "C:\Users\cicle.EAAULAINF1W-008\Desktop\Anticorona.py", line 23, in <module>
    scan.config(height=1, width=10, font=('Century gothic', 30, 'bold'), bg='green', disabledforeground='', command=scaner())
  File "C:\Users\cicle.EAAULAINF1W-008\Desktop\Anticorona.py", line 20, in scaner
    progress.length(50)
AttributeError: 'Progressbar' object has no attribute 'length'

我不知道该怎么办!请帮帮我!

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 00:11:29 552 0
1 条回答
写回答
取消 提交回答
  • 您在这里遇到一些问题。

    首先,您的command = scaner()必须是command = scaner。

    第二,您的函数不应以self作为参数。这不是在类中构建的。

    第三progress.length(50)将导致错误,并且在进度类中没有这样的名为length的方法。相反,您想执行Progressbar(f1,length = 50)

    import tkinter as tk
    from tkinter import ttk
    
    
    def scanner():
        global progress
        f1 = tk.Frame()
        f1.pack()
        progress = ttk.Progressbar(f1, length=50)
        progress.pack()
    
    
    window = tk.Tk()
    window.geometry('500x500')
    window.resizable(False, False)
    window.title('Anti Corona')
    window.config(bg='light blue')
    
    tk.Label(text='Anti Corona', bg='light blue', font=('Arial black', 50)).pack()
    tk.Label(text='', bg='light blue', font=('Arial black', 100)).pack()
    tk.Button(window, text='Scan!', bg='green', disabledforeground='', height=1, width=10, 
              font=('Century gothic', 30, 'bold'), command=scanner).pack()
    window.mainloop()
    

    回答来源:stackoverflow

    2020-03-24 00:11:36
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
用计算和数据去改变整个世界 立即下载
重新定义计算的边界 立即下载
低代码开发师(初级)实战教程 立即下载