class MyApp(SomeWindowClass):
我真的不想使用一个如此痴迷于对象的人制作的图书馆,他/她认为该应用程序应该有一个类(只有一个例子,所以我不会看看为什么有人想要做额外的打字) (顺便说一句,对于那些同意这些库建立方式的人来说,没有任何冒犯意图,我真的很想知道是否有任何东西可以减少对象的数量)
答案 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,它可以帮助你避免繁琐的类定义代码。