虽然是强烈不建议用Python这样的语言来写GUI,即便Python有兼容各系统的图形库,但是在面向特定系统时还是要用本家的语言来写。Python可以用来学习一下接口调用和对象逻辑还是ok的。

#导入tkinter包所有内容,tkinter封装了访问tk的接口,而tk是支持多操作系统的图形库
from tkinter import *

#来写一个GUI的HelloWorld
#先从Frame框架中派生一个Application类
#注意的是,要把Application看成一个父Widget,之后所有的标签按钮元素都是子Widget。根据这个逻辑可以构建一个Widget树
#使用pack方法添加Widget至父容器
class Application(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.pack()
        self.createWidgets()

    def createWidgets(self):
        self.helloLabel = Label(self, text='Hello, world!')
        self.helloLabel.pack()
        self.quitButton = Button(self, text='Quit', command=self.quit)
        self.quitButton.pack()
#pack方法实现了最简单的布局方法,更加复杂应当使用grid方法
app = Application()
#设置窗口标题
app.master.title('Hello World')
#主消息循环,即开始监听操作系统的命令
app.mainloop()

以上代码实现了最简单的标签和按钮功能。不妨在其中再加一个文本输入框,实现交互功能。

from tkinter import *
import tkinter.messagebox as messagebox

class Application(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.pack()
        self.createWidgets()

    def createWidgets(self):
        self.helloLabel = Label(self, text='Hello, world!')
        self.helloLabel.pack()
        self.quitButton = Button(self, text='Quit', command=self.quit)
        self.quitButton.pack()
#----------
        self.nameInput = Entry(self)
        self.nameInput.pack()
        self.alertButton = Button(self, text='Hello', command=self.hello)
        self.alertButton.pack()

    def hello(self):
        name = self.nameInput.get() or 'world'
        messagebox.showinfo('Message', 'Hello, %s' % name)
#----------

app = Application()

app.master.title('Hello World')

app.mainloop()

Melancholy.