1

こんにちは私はPythonでTkinterを使ってタイムマシンの画像を閲覧するツールを作成しようとしています。ここからコードを使用する予定です:http ://code.google.com/p/python-ttk/source/browse/trunk/pyttk-samples/dirbrowser.py?r=21ディレクトリブラウザ用。スタートメニューを作成し、[参照]ボタンをクリックすると、ディレクトリブラウザが開き、ユーザーがファイルを選択して、パスがラベルに戻されます(これをラベルに追加する必要があります。ディレクトリブラウザコードはまだ)。以下は私のスタートメニューのコードです:

#!/usr/bin/python

from Tkinter import *
import ttk

class App:

    def __init__(self,master):

        frame = Frame(master)
        frame.pack()

        self.label = Label(frame, text="Please enter file path or browse to a file")
        self.label.pack(side=TOP)

        self.button = Button(frame, text="OK", command=messageWindow)
        self.button.pack(side=BOTTOM)

        self.hi_there = Button(frame, text="Browse")
        self.hi_there.pack(side=BOTTOM)

        self.entry = Entry(frame, width = 30)
        self.entry.pack(side=LEFT)

root = Tk()

app = App(root)

root.mainloop()

Tkinterでは一度に2つのルートフレームを持つことはできないと読みましたが、ディレクトリブラウザにもルートフレームがあるため、代替手段を見つけるのに苦労しています。私がしていることが正しいかどうかはわかりませんが、参照用のボタンに次のように追加しました。

 self.hi_there = Button(frame, text="Browse", command=dir)

私はディレクトリブラウザコードをクラス内に置き、それをdirと呼びました。だから私の考えは、私はクラス全体を呼び出すべきだということですか?しかし、dirという名前が定義されていないというエラーが表示されます。これを正しく行うにはどうすればよいですか?

4

1 に答える 1

1

「タイム マシン イメージ」の意味がよくわかりませんが、役立つかもしれないことがいくつかあります: 変数 name は使用しないdirでください。問題に。クラス内で呼び出されたメソッドを見つけるのに問題がある場合はdir、クラス内を調べるように指示していることを確認してください。

    def sayHello():
        print "Hello!"


    class Person:

        def sayHello():
            print "Hello from Person"

    a_person = Person()

    sayHello() 
    ##"Hello"

    a_person.sayHello()
    ## "Hello from Person"

呼び出しprintHelloとは 2 つの異なる関数であり、ボタンclass_instance.printHelloに渡す必要があります。class_instance.dir

私はあなたがそれらについて知っていると確信していますが、ファイルパス、ファイル名などを取得するのに役立つ既製のファイルダイアログがあります.

別のことは、新しいインスタンスが必要ないことです。新しいrootインスタンスを探しています。これは本質的に新しいTopLevelインスタンスと同じですrootが、まったく同じではありません。

于 2013-02-05T18:38:14.927 に答える