-2

テキスト ボックスの 9x9 グリッドを作成しようとしています。グリッド関数の「エントリ」セクションでエラーが発生し続けます。助けてください、私が望んでいることをしないコードを持っているために、私が自分自身を見つけた不幸な状況について、私は非常に悲しいです.

import Tkinter
from Tkinter import *
import tkMessageBox

def window():
    main_window = Tkinter.Tk()
    main_window.geometry("500x500")      
    main_window.wm_title("Sudoku Solver 2000gazillion")
    main_window.mainloop()

def grid():
    knownNumbers = [
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0]
        ]
    for row in range(0,9):
        for col in range(0,9):
            entry = Entry(main_window, textvariable = knownNumbers[row][col])
            entry[row][col].grid(row=row, column=col) 

def goButtonAction():
    tkMessageBox.showinfo("Horray!", 'Finished product goes here')

def goButton():
    button=Button(main_window, text = "Solve it!", command = goButtonAction )
    button.grid(row=10, column=0, columnspan = 9)

def main():
    window()
    grid()
    goButton()

main() #run it up

次のエラーが表示されます。

Traceback (most recent call last):
  File "C:/Windows/System32/temp", line 40, in <module> main() #run it up
  File "C:/Windows/System32/temp", line 37, in main grid()
  File "C:/Windows/System32/temp", line 25, in grid entry = Entry(main_window, textvariable = knownNumbers[row][col])
NameError: global name 'main_window' is not defined

私はPython 2.7を使用しています

4

1 に答える 1

0

main_window関数で変数を定義していwindow()ます。これにより、関数に対するこの変数の使用が制限されwindow()ます。どこでも利用できるようにしたい場合はwindow()、たとえば次のように、関数の外で定義できます。

# Imports

main_window = Tkinter.tk()

def window():
    main_window.geometry("500x500")
# Rest of your code
于 2013-11-14T17:14:20.427 に答える