Python tk 滚动框架?
我正在用Python的Tkinter创建一个简单的图形界面应用,但在给一个框架添加滚动条时遇到了问题。这个框架在我的20英寸屏幕上可以完整显示,但如果在上网本或其他低分辨率的屏幕上,就需要一个滚动条才能显示所有内容。以下是我认为可以工作的代码片段(在列表框中是可以的)。
framelist = Tkinter.Frame(self.pmaster, relief=FLAT, borderwidth=0)
framelist.pack(fill=BOTH, padx=0, pady=0)
yscroll = Tkinter.Scrollbar(framelist, width=10, orient=VERTICAL)
yscroll.pack(fill=Y,side=RIGHT,padx=0,pady=0)
不过,显然这在框架上不起作用。希望大家能帮我解决这个问题,我会非常感激!
我还在想Tkinter是不是有点过时了。它是我在学校学的唯一图形界面工具,但那是好几年前的事了,现在已经不能满足我的需求了。肯定有更好的替代方案吧?顺便说一下,我是在使用Ubuntu。
1 个回答
在tkinter中,框架小部件是不能滚动的。一个解决办法是把整个框架放在一个画布里(作为一个画布对象),然后把滚动条连接到这个画布上。你需要告诉画布可滚动区域的大小,这可以通过在放置所有小部件后获取框架的大小来实现。不过,你可能需要重新考虑一下你的界面设计——可滚动的框架无论用什么图形界面工具包都不是特别好用。
至于Tkinter是否过时……有人说是,有人说不是。关于tkinter的信息很多,有些甚至不准确,所以对所有关于tkinter的看法都要保持怀疑态度(包括我自己的!)。Tkinter还在不断改进,并没有停滞不前。如果你有机会使用Python 2.7或更高版本,你可以使用ttk小部件,它提供了平台特定的主题和一些额外的小部件,比如笔记本和层次树等。
如果你想找替代品,可以看看wxPython。根据我的经验,它似乎比tkinter有更多的bug和小问题,但小部件更多,似乎也更受欢迎。
我觉得tkinter和wxPython的区别就像是Home Depot(一个家居改善和木材商店)和Ikea(你自己组装的预制家具)之间的区别——一个给你提供了几乎可以做任何东西的所有零件(tkinter),另一个则给你很多预包装的东西。每种方法都有自己的优缺点。