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 不能同时拥有两个根框架,但我正在努力寻找替代方案,因为目录浏览器也有一个根框架。我不确定我所做的是否正确,但在浏览按钮上我添加了:

 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"

调用printHelloandclass_instance.printHello是两个不同的函数,您需要传递class_instance.dir给按钮。

I'm sure you know about them, but there are premade file dialogs to help with getting filepaths, filenames etc.

Another thing is you don't want a new root instance, you're looking for a new TopLevel instance, which is essentially the same thing as a new root, but not quite.

于 2013-02-05T18:38:14.927 回答