0

これは私のコードです:

import sys
from tkinter import *


#first new screen
def hypoténusegetdef ():
    widgets1 = button1
    nextscreen1(widgets1)

def next_screen1(names):
    for widget in names:
        widget.place_forget() 
        hyplabel1 = Label (text = "This is my text")



def next_screen(names):
    for widget in names:
        widget.place_forget()
        button1 = Button (text = "Button1",fg = "blue",command = hypoténusegetdef)
        button1.grid (row = 1,column = 2)


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

################################################################################

#first page things
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()

ユーザーに「次へ」をクリックしてもらいたいのですが、そのボタンをクリックすると「button1」という名前のボタンが表示され、「これは私のテキストです」というテキストが表示されるはずですが、エラーが発生します。

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:\Python33\Projects\MyMathDictionary.py", line 7, in hypoténusegetdef
widgets1 = button1
NameError: global name 'button1' is not defined

どんな助けでも感謝されます:

4

1 に答える 1

1

button1 は next_screen で定義されていますが、hypoténusegetdef で使用されています。ある関数の変数を別の関数内で使用することはできません。コードの残りの部分を見ると、おそらく最も簡単な方法は、どこからでもアクセスできるグローバル変数を使用することです (一般的には悪い習慣ですが、短いスクリプトの場合は簡単になります)。

于 2013-08-12T12:46:47.207 に答える