2

Tkinter を使用して Python プログラムのランチャーを作成しようとしています。execfile 関数を使用したところ、幸いにもターゲット GUI が開きました。ただし、どのボタンも機能せず、ほとんどの関数が参照するグローバル変数が定義されていないと表示されます。

プログラムを起動するコード:

def launch():
    execfile("gui.py")

それはうまくいきます。ターゲット プログラムの基本コード:

from Tkinter import *
gui = Tk()
gui.title("This is a GUI")

編集: ボタンの例:

def buttonWin():
    buttonWindow = Toplevel(gui)
    button = Button(buttonWindow, text = "Button", width = 10, command = None)
    button.pack()

トップレベルの「gui」変数を参照すると、エラーが発生します。Launcher スクリプトで 'gui' 変数を定義しようとしましたが、Launcher ではなくターゲット スクリプトが最初に開くだけでした。

gui = Tk()
launcher = Tk()
launcher.title("Launcher")
def launch():
    return execfile("gui.py")
launchButton = Button(launcher, text = "Launch", width = 10, command = launch)

このプログラムのボタンの 1 つを押してみると、NameError が発生します: $NameError: Global variable 'gui' is not defined$ また、これは Python 2.7.5 にあります。回答してくれた人に感謝します。コード ブロックのエラーについては申し訳ありません。私は新しいです。

4

1 に答える 1

1

問題は、Tkinter プログラムを正しく構成していないことです。

「gui.py」には、次のようなものが必要です。

from Tkinter import *

gui= Tk()
gui.mainloop()

ボタンを追加して機能を実行し、カスタマイズできます。

from Tkinter import *

gui = Tk()
gui.title("This is a GUI")    

def launch():
    execfile("gui.py")

launchbutton = Button(gui, text='Launch Program', command=launch)
launchbutton.pack()

gui.mainloop()

あなたの関数buttonWinでは、クラスによって通常処理されることをしようとしていたと思います。ここでunutbuの回答を参照してください。

あなたの問題に対処したかどうかはわかりませんが、これが出発点です。

于 2013-08-01T18:01:22.987 に答える