【问题标题】:Python/tkinter - Missing 1 positional arguementPython/tkinter - 缺少 1 个位置参数
【发布时间】:2016-12-14 18:05:18
【问题描述】:

我正在尝试猜数字游戏,它会选择一个随机数,然后如果您选择正确的按钮,则表示您正确,如果您选择错误的按钮,则表示错误。

print("~Guess the Number~")
print("Pick any number")

topFrame=Frame(root)
bottomFrame=Frame(root)

topFrame.pack(side=TOP)
bottomFrame.pack(side=BOTTOM)

#Random Number
import random
b=(random.randint(1,4))

#Functions
def number1(event,b):
if b==1:
    print("You guessed the correct number")
else:
    print("Not the correct number")

def number2(event,b):
if b==2:
    print("You guessed the correct number")
else:
    print("Not the correct number")

def number3(event,b):
if b==3:
    print("You guessed the correct number")
else:
    print("Not the correct number")

def number4(event,b):
if b==4:
    print("You guessed the correct number")
else:
    print("Not the correct number")

#Where the buttons are
button1=Button(topFrame,text="1")
button2=Button(topFrame,text="2")
button3=Button(topFrame,text="3")
button4=Button(topFrame,text="4")
button5=Button(bottomFrame,text="Quit")

#Binding the buttons
button1.bind("<Button-1>",number1)
button1.pack(side=LEFT)

button2.bind("<Button-2>",number2)
button2.pack(side=LEFT)

button3.bind("<Button-3>",number3)
button3.pack(side=LEFT)

button4.bind("<Button-4>",number4)
button4.pack(side=LEFT)

button5.pack()

它给了我:

__init__.py", line 1550, in __call__
return self.func(*args)
TypeError: number1() missing 1 required positional argument: 'b'

我对python还不太了解:/

【问题讨论】:

  • 这是你的完整代码吗?
  • @Yousaf 我在顶部有 from tkinter import *
  • 代码缩进不正确。缩进对于 Python 代码至关重要。

标签: python function button tkinter


【解决方案1】:

你的函数需要两个参数

def number1(event, b):

bind() 总是只发送一个 - event

您可以使用lambda 发送更多参数

 bind(`<Button-1>`, lambda event: number1(event, b))

BTW &lt;Button-1&gt;&lt;Button-2&gt;等表示鼠标按键

&lt;Button-1&gt; 是鼠标左键。
&lt;Button-2&gt; 是鼠标中键。
&lt;Button-3&gt; 是鼠标右键。

BUtton() 有参数command= 分配功能,它不发送event

 button1 = Button(topFrame, text="1", command=lambda:number1(b))

 def number1(b):
    # ...    

但你可以为所有按钮创建一个函数

def check_number(b, button_number):
    if b == button_number:
         print("You guessed the correct number")
    else:
        print("Not the correct number")

button1 = Button(topFrame, text="1", command=lambda:check_number(b, "1"))
button2 = Button(topFrame, text="2", command=lambda:check_number(b, "2"))
button3 = Button(topFrame, text="3", command=lambda:check_number(b, "3"))
button4 = Button(topFrame, text="4", command=lambda:check_number(b, "4"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多