Stage5--Python GUI编程TKinter

Python图形库简要介绍

python提供了多个图形开发界面的库,几个常用Python GUI库如下:

  • Tkinter: Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

  • wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。

  • Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。

Tkinter实现最简单的窗口

import tkinter

top = tkinter.Tk()
top.mainloop()

这里写图片描述

第一步导入tkinter包,第二步创建一个窗体,第三部循环(不退出程序)
我们如果要写更复杂的界面就需要参考Tkinter的文档了http://effbot.org/tkinterbook/

Tkinter实现的一个小Demo

from tkinter import *

class ControllPanel(Frame):

    def __init__(self, master):
        Frame.__init__(self, master, width=360, height=260)
        self.pack()


class UrlArea(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.pack(pady=20)
        self.label = Label(self, text="网址:")
        self.label.pack(side=LEFT)
        self.url = Entry(self, width=40)
        self.url.pack(side=RIGHT)       


class RegixArea(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.pack()
        self.label = Label(self, text="正则:")
        self.label.pack(side=LEFT)
        self.regix = Entry(self, width=40)
        self.regix.pack(side=RIGHT)


class ButtonArea(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.pack(pady=40)
        self.verify_button = Button(self, text="验证正则", command=self.verifyRegix)
        self.verify_button.pack(padx=50, side=LEFT)
        self.start_button = Button(self, text="开始爬取", command=self.startRun)
        self.start_button.pack(padx=50, side=RIGHT)

    def verifyRegix(self):
        print("verify......")

    def startRun(self):
        print("run.......")


class StatusBar(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.pack(side=BOTTOM, fill=X)
        self.label = Label(self, bd=1, relief=SUNKEN, anchor=W)
        self.label.pack(fill=X)

    def set(self, format, *args):
        self.label.config(text=format % args)
        self.label.update_idletasks()

    def clear(self):
        self.label.config(text="")
        self.label.update_idletasks()   


root = Tk()
root.title("爬虫管理窗口")

#让窗口居中显示
scnWidth, scnHeight = root.maxsize()
tmpcnf = '%dx%d+%d+%d'%(308, 101, (scnWidth-308)/2, (scnHeight-101)/2)
root.geometry(tmpcnf)

root.maxsize(600, 300)
root.minsize(360, 220)
#root.resizable(False, False) #让窗口尺寸不变

controllPanel = ControllPanel(root)

UrlArea(controllPanel)
RegixArea(controllPanel)
ButtonArea(controllPanel)
status_bar = StatusBar(root)
status_bar.set("等待爬取……")


root.mainloop()
root.destroy()

这里写图片描述

原文地址:https://www.cnblogs.com/lanzhi/p/6468426.html