Python tk滚动框架?

4

我正在使用Python的Tkinter创建一个简单的GUI应用程序,但是我在将滚动条添加到单个框架时遇到了问题。该框架在我的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是否已经过时了。它是我在学校学到的唯一GUI接口,但那已经是几年前的事了,现在它已经不能满足我的需求了。肯定有更好的替代方案吧?顺便说一下,我使用的是Ubuntu。
1个回答

6
tkinter的框架小部件不支持滚动。一种解决方法是将整个框架放在画布中(作为画布对象),并将滚动条附加到画布上。您必须告诉画布可滚动区域的大小,这可以通过在放置所有小部件后获取框架的大小来完成。但是,您可能需要重新考虑您的用户界面设计 - 无论使用哪个GUI工具包,可滚动的框架都不太容易使用。
至于Tkinter是否已过时...有人说是,有人说不是。有很多关于tkinter的错误信息,请对所有tkinter意见保持怀疑态度(即使是我的意见!)。Tkinter继续改进,它没有停滞不前。如果您有幸使用python 2.7或更高版本,则可以访问ttk小部件,其中包括特定于平台的主题和其他小部件,例如笔记本和分层树等。
对于替代方案,您可能想查看wxPython。在我看来,它似乎比tkinter具有更多的错误和怪癖,但具有更多的小部件,并且似乎更受欢迎。
我认为tkinter和wxPython之间的区别就像Home Depot(家庭装修/木材院商店)和Ikea(预制家具,您自行组装)之间的区别一样 - 一个给您所有的零件,让您可以制作任何想要的东西(tkinter),另一个则提供了许多预包装的物品。每种方法都有其优点和缺点。

感谢您的详细回复!我会重新考虑UI设计,因为在画布内操作框架似乎是一种混乱的解决方法,而不是一个“真正”的解决方案。我也会看看wxPython,但如果它没有提供任何新的和令人兴奋的东西,我可能会在这个项目中坚持使用Tkinter。 - Fredrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接