0

我对 python 很陌生,我遇到了类型错误,但我个人看不到它。帮助将不胜感激。我正在使用 Windows 7。

错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
    return self.func(*args)
  File "C:\Users\Kids\Desktop\Python Tests\Clock2.py", line 18, in mclock
    mlable = Label(mGui, str(z), "minute(s) has past.").pack()
TypeError: __init__() takes from 1 to 3 positional arguments but 4 were given

代码:

import sys
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
import os
from time import sleep

def mclock():
    x = 1
    z = 0
    while x != -1:
        mlable = Label(mGui,text = "str(x) second(s)").pack()
        x = x+1
        sleep(1)
        if x == 60:
            x = 1
            z = z+1
        mlable = Label(mGui, str(z), "minute(s) has past.").pack()
    return

mGui = Tk()

mGui.geometry("300x200+100+100")
mGui.title("Jono's Clock")

menubar = Menu(mGui)

filemenu = Menu(menubar, tearoff = 0)
filemenu.add_command(label = "Clock",command = mclock)

menubar.add_cascade(label = "File",menu = filemenu)
mGui.config(menu = menubar)

mGui.mainloop()

此外,如果有人知道如何添加一个清除功能以在每次滴答时清除秒数,那也将不胜感激。

4

1 回答 1

1

与所有 Python 方法一样,标签初始值设定项具有self第一个参数。它最多只接受两个额外的位置参数(主参数和cfg参数),但你给出了 3 个:

Label(mGui, str(z), "minute(s) has past.")

您可能想连接这两个字符串;您必须将其作为text关键字参数显式传递:

Label(mGui, text=str(z) + " minute(s) has past.")
于 2013-09-26T17:05:01.377 回答