• 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()
    

    这里写图片描述

  • 相关阅读:
    JavaScript对象模型执行模型
    jQuery+CSS实现的图片滚动效果
    js笔记作用域(执行上下文[execution context],活动对象) 闭包
    JavaScript中的值类型和引用类型
    程序员第一定律:关于技能与收入
    JavaScript 秘密花园 http://bonsaiden.github.com/JavaScriptGarden/zh/
    程序员三大世界观 如何看待HTML5
    10 条建议让你创建更好的 jQuery 插件
    html 打印
    面向对象的 Javascript (声明篇)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468426.html
Copyright © 2020-2023  润新知