0

Python でボタン ウィジェットを使用して数字を入力する簡単な GUI を作成しています。押されたときに NumLibs という名前の関数を呼び出すボタンを呼び出します。Numlib は、呼び出し MyDialog からのデータにアクセスします。メインの python プログラムで d.result に格納されている値にアクセスしたいのですが、アクセスできません。誰かがこの値にアクセスするのを手伝ってくれますか? 私のコードが添付されていることを確認してください。

**from Tkinter import *
import tkSimpleDialog
import sys
import os
import string
def callback():
    print "called the callback!"
class MyDialog(tkSimpleDialog.Dialog):
    def body(self, master):
        Label(master, text="No.of Libraries :").grid(row=0)
        self.e1 = Entry(master)
        self.e1.grid(row=0, column=1)
        return self.e1 # initial focus
    def apply(self):
            first = string.atoi(self.e1.get())
        self.result=first
            #print first # or something

def NumLib():
    d=MyDialog(root)
    return d.result



root = Tk()
root.title("SIMKIT")
toolbar = Frame(root, width=300, height=300, bg="grey", bd=1, relief="sunken")
b = Button(toolbar, text="Enter No. of Libraries", command=NumLib)
b.pack(padx=10, pady=10)
toolbar.pack()
root.mainloop()**

前もって感謝します。

よろしく、カウストブ

4

2 に答える 2

1

ダイアログ ボックスの結果をメイン プログラム インスタンスの属性として設定する必要があります。このようにして、アクセスできるようになります。
たとえば、次のクラスは入力された値を読み取り、ボタンに書き込みます。

class MyDialog(tkSimpleDialog.Dialog):
    -----  same code ---------


class MyToolbar(Frame):

    def __init__(self, *args, **kargs):
        Frame.__init__(self, *args, **kargs)
        self.b = Button(self, text="Enter No. of Libraries", command=self.NumLib)
        self.b.pack(padx=10, pady=10)
        self.pack()

    def NumLib(self):
        d = MyDialog(root)
        self.result = d.result            # you have your value in this instance variable
        self.b.config(text= self.result)  # for example I can use it to change the button label


root = Tk()
root.title("SIMKIT")
toolbar = MyToolbar(root, width=300, height=300, bg="grey", bd=1, relief="sunken")
root.mainloop()
于 2012-12-26T22:32:50.687 に答える
0

ボタンが押されたときに呼び出される場合と呼び出されない場合があるため、呼び出されたときに変数がMyDialogresult存在しない可能性があります。apply()MyDialog.resultNumLib()

MyDialog.resultおそらくコンストラクターまたはクラスのトップレベルで、ボタンが押される前に の値をダミーの値に設定してみて、何が起こるかを確認してください。

于 2012-12-26T22:13:08.840 に答える