1

ラジオボタンのリストがあり、同じ変数にリンクされています。送信ボタンをクリックすると、現在の変数値を別の関数に渡し、その番号を使用します。ラムダ関数を使用しましたが、関数を呼び出す必要があるときに、グローバル名 'num' が定義されていません。num は私の関数です。以下は私のコードです。どうもありがとうございました。

from tkinter import *
import random

class App:

def __init__(self, master):


def say_one(self):

    v = IntVar()
    window = Toplevel(root)

    for i in range(1,11):
        self.label = Radiobutton(
            window, text = i , fg = "red", 
            value = i, variable = v
        ).grid(row =i, column =0)

    # error is occurring in the next line
    self.report = Button(
        window, text="submit", command= lambda : num (v) 
    ).grid(row = 12, column = 0)        

def num( number):
    print(number)

root = Tk()

app = App(root)

root.mainloop()
4

1 に答える 1

3

コードを正しくインデントします。

from tkinter import *
import random

class App:
    def __init__(self, master):
        self.say_one()

    def say_one(self):
        v = IntVar()
        window = Toplevel(root)

        for i in range(1,11):
            self.label = Radiobutton(
                window, text = i , fg = "red", 
                value = i, variable = v
            ).grid(row =i, column =0)

        # error is occurring in the next line
        self.report = Button(
            window, text="submit", command=lambda: num(v) 
        ).grid(row = 12, column = 0)        

def num(var):
    print(var.get())

root = Tk()
app = App(root)
root.mainloop()

インデントを修正し、num変数自体を出力する代わりに変数の値を出力するように関数を変更しました。

于 2013-07-25T10:14:20.107 に答える