tkinter python创建子窗口

时间:2013-02-05 17:21:20

标签: python function tkinter

您好我正在尝试使用python中的Tkinter创建一个浏览时间机器图像的工具。我打算使用此处的代码:http://code.google.com/p/python-ttk/source/browse/trunk/pyttk-samples/dirbrowser.py?r=21作为目录浏览器。我写了一个开始菜单,然后点击“浏览”。按钮我希望打开目录浏览器,用户可以在其中选择文件,然后将路径传递回Label(我需要将其添加到目录浏览器代码中)。以下是我的开始菜单的代码:

#!/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没有定义。我有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

我不太明白“时间机器图像”是什么意思,但我有一些可能对你有用的东西:不要使用变量名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"

致电printHelloclass_instance.printHello是两个不同的功能,您需要将class_instance.dir传递给该按钮。

我确定你了解它们,但有预制file dialogs来帮助获取文件路径,文件名等。

另一件事是你不想要一个新的root实例,你正在寻找新的TopLevel instance,这与新的root基本相同,但不是相当。