0

私はまだPythonにはかなり慣れていないので、私の質問が些細なことやばかげていたら申し訳ありません. ボタンのコールバック (コードにはありません) に反応する小さなモジュールを構築しようとしています。コールバックは main() 関数でシミュレートされます。私の問題は、グローバル名のエラーを取り除く方法がわからないことです。これは、drink0_ingred がグローバル名として定義されていないことを示しています。これは、self.l0 というラベルのテキストとして必要です。これは私がこれまでに持っているものです:

import tkinter
from tkinter import ttk


def main():
    root = tkinter.Tk()
    callback = callbackkb0()
    drink0 = Drink0(root)
    root.mainloop()


def callbackkb0():
    with open(file="drink0_ingred.txt") as ingred0:
        drink0_ingred = ingred0.read()
    print(drink0_ingred)
    return drink0_ingred



class Drink0(ttk.Frame):
    def __init__(self, root):
        ttk.Frame.__init__(self, root)
        self.grid()
        self.widgets_create()

    def widgets_create(self):
        self.l0 = ttk.Label(self, text=drink0_ingred)
        self.l0.grid()


main()

drink0_ingred をグローバル名として定義し、他の関数からアクセスできるようにするにはどうすればよいですか? 私を助けてくれてありがとう!

4

1 に答える 1

1

あなたができる2つのこと:

グローバル化drink0_ingred:

with open(file="drink0_ingred.txt") as ingred0:
    global drink0_ingred
    drink0_ingred = ingred0.read()

変数を呼び出す代わりに関数を呼び出します。

self.l0 = ttk.Label(self, text=callbackkb0()) # Notice how I called the function 
                                              # because it returned drink0_ingred
于 2013-04-23T13:47:34.660 に答える