2013-08-09 2 views
-3

Это мой код:Кнопка ошибки не определена?

import sys 
from tkinter import * 


def next_screen(names): 
    for widget in names: 
     widget.place_forget() 

def forget_page1(): 
    widgets = [mLabel1, button] 
    next_screen(widgets) 

mGui = Tk() 

mGui.geometry("600x600+545+170") 
mGui.title("MyMathDictionary") 
mLabel1 = Label (text = "Welcome to MyMathDictionary. Press Next to continue.", 
       fg = "blue",bg = "white") 
mLabel1.place (x= 150,y = 200) 

button = Button (text = "Next", command = forget_page1()) 
button.place(x = 275,y = 230) 

mGui.mainloop() 

Он говорит мне:

Traceback (most recent call last): File 
"C:\Python33\Projects\MyMathDictionary.py", line 24, in <module> 
    button = Button (text = "Next", command = forget_page1 (mLabel,button)) NameError: name 'button' is not defined 

Что это сообщение об ошибке означает?

+3

Вы понимаете, ваше исключение и ваш код показать другой код для одной и той же линии, не так ли? :) –

+1

Аргументы 'forgetpage()' в вашем примере кода отличны от сообщения об ошибке. Обращаясь к 'button' в той же строке, которую вы определяете, это, конечно, не сработает. – Junuxx

+0

не 'import *', вы беспорядок бесполезно используете свое пространство имен –

ответ

1

Изменить эту строку кода:

button = Button (text = "Next", command = forget_page1()) 

Для этого:

button = Button (text = "Next", command = forget_page1) 

Ваша проблема в том, что вы звонили forget_page1 перед окном загружены.

Кроме того, как уже отмечалось, ваша ошибка отличается от вашего кода. Но я тоже скоро перейду к этому. Если вы хотите послать аргументы командной функции кнопки, вы должны использовать lambda:

button = Button(command = lambda: func(arg1, arg2)) 
+0

Хорошо, но почему лямбды ??? я не могу использовать его с forget_page (x) ... и сообщение об ошибке ... я скопировал его потом и подписал код, извините за это ... –

+1

@ChaudryShahidIqbal - вам нужно использовать «лямбда», если вы планируете для отправки аргументов вашей функции. В противном случае, когда Python считывает ваш скрипт и достигает этой точки, он будет вызывать вашу функцию. 'lambda' - это в основном встроенная функция. Другими словами, его функция вызывает функцию, чтобы эта функция не вызывалась при запуске. – iCodez