嗨,我正在尝试创建一个工具,在 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 未定义。我可以采取什么方法来解决这个问题?
最佳答案
我不太明白你所说的“时间机器图像”是什么意思,但我有一些可能对你有帮助的东西:不要使用变量名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
和 class_instance.printHello
是两个不同的函数,您需要将 class_instance.dir
传递给按钮。
我相信你知道它们,但有预制的 file dialogs帮助获取文件路径、文件名等。
另一件事是您不需要新的 root
实例,您正在寻找新的 TopLevel
instance ,这本质上与新的root
相同,但又不完全一样。
关于python - tkinter python 创建子窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713232/