有没有疯狂的人制作的python的跨平台窗口工具包?

时间:2011-02-01 20:42:12

标签: python object cross-platform window toolkit

好吧也许疯狂有点过于强烈,但我要问的是,是否有任何窗口工具包没有让我这样做:

class MyApp(SomeWindowClass):

我真的不想使用一个如此痴迷于对象的人制作的图书馆,他/她认为该应用程序应该有一个类(只有一个例子,所以我不会看看为什么有人想要做额外的打字) (顺便说一句,对于那些同意这些库建立方式的人来说,没有任何冒犯意图,我真的很想知道是否有任何东西可以减少对象的数量)

5 个答案:

答案 0 :(得分:11)

通常,GUI工具包依赖于某种形式的事件循环运行,这些工具包中的Application类通常负责该事件循环并从底层窗口管理器编组事件。当然,他们可以调用类EventLoopManager或其他东西,但你需要它,所以它只是一个命名的东西。在某些情况下,虽然经常使用事件的一些工具包偶尔可以在没有它们的情况下使用,然后你当然不希望它成为一些自动的东西。

答案 1 :(得分:5)

PyQT

答案 2 :(得分:2)

Tkinter每个窗口/对话框有一个对象,而不是应用程序,并且不需要类来获取屏幕上绘制的内容。但它确实有自己的主循环(就像所有其他GUI库一样)。强制性的Hello World:

from Tkinter import *
root = Tk()    
w = Label(root, text="Hello, world!")
w.pack()    
root.mainloop()

答案 3 :(得分:0)

PyGTK另一个工具包;这是Gtk的python绑定。它结构合理,具有出色的窗口和事件循环系统。 显示窗口的典型示例

import gtk
class Application:
    def __init__(self):
        self.window = gtk.GtkWindow(gtk.WINDOW_TOPLEVEL)
        self.window.show()

if __name__ == "__main__":
    app = Application()
    gtk.mainloop()

另一个建议是PyQt;这是Qt的python绑定。 典型的hello world示例是

    import sys
    from qt import *

    app = QApplication(sys.argv)
    myLabel = QLabel("Hello world!", None)
    app.setMainWidget(myLabel)
    myLabel.show()

    app.exec_loop()

PyQt和PyGtk广泛用于快速GUI开发。根据我的经验,与pyQt相比,pyGtk的在线文档/支持很差。但两者都是我的最爱。

答案 4 :(得分:0)

正如您在上面的答案中看到的那样,GUI编程几乎总是面向对象,并且有很好的理由:图形元素在如何相互定位方面共享很多,关心是否鼠标指针在它们之上等等。此外,qt,wx,gtk等的C ++套件。 wrap已经在类/继承层次结构上构建,所以你不应该对python包装器也感到惊讶。

如果你只想要简单的GUI元素,那么你可以考虑easyGUI(简单的消息框,文本编辑,选择),triatsUI(交互式对象包装器,主要用于控制图形对象),每个解决了GUI交互的某些部分,而没有明确地编写GUI代码。 要编辑类似记录的结构中的字段值,您还可以调查GUIdata。

PS:有各种图形工具可以让你设计你的GUI并将一些事件链接在一起,例如QtDesigner,它可以帮助你避免繁琐的类定义代码。