4

我正在使用 Tkinter 和 Python 创建一个简单的 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 上。

4

1 回答 1

6

tkinter 的框架小部件不滚动。一种解决方案是将整个框架放在画布中(作为画布对象),并将滚动条附加到画布上。您必须告诉画布可滚动区域有多大,您可以通过在将所有小部件放入其中后获取框架的大小来做到这一点。不过,您可能需要重新考虑您的 UI 设计——无论您使用什么 GUI 工具包,可滚动框架都不是很容易使用。

至于 Tkinter 是否过时……有人说是,有人说不是。那里有很多 tkinter 错误信息,因此请对所有 tkinter 意见持保留态度(甚至是我的!)。Tkinter 继续改进,并没有停滞不前。如果您有幸使用 python 2.7 或更高版本,您可以访问 ttk 小部件,这些小部件提供特定于平台的主题和其他小部件,例如笔记本和分层树等。

对于替代方案,您可能需要查看 wxPython。根据我的经验,它似乎比 tkinter 有更多的错误和怪癖,但有更多的小部件并且似乎更受欢迎。

我喜欢认为 tkinter 和 wxPython 之间的区别就像 Home Depot(家居装修/腰部庭院商店)和 Ikea(您自己组装的预制家具)之间的区别 - 一个为您提供所有零碎的东西你想要的任何东西(tkinter)另一个给你很多预先打包的东西。每种方法都有其优点和缺点。

于 2010-12-29T04:39:50.487 回答