• Python TK编程第一部分 Hello Again


    当你想写大一点的程序的时候,将你的代码封装到一个或者多个类里会是一个不错的办法。下面'hello world'这个例子来自Matt Conway的Tkinter Life Preserver.

    [python] view plain copy
    1. from Tkinter import *  
    2.   
    3. class App:  
    4.   
    5.     def __init__(self, master):  
    6.   
    7.         frame = Frame(master)  
    8.         frame.pack()  
    9.   
    10.         self.button = Button(  
    11.             frame, text="QUIT", fg="red", command=frame.quit  
    12.             )  
    13.         self.button.pack(side=LEFT)  
    14.   
    15.         self.hi_there = Button(frame, text="Hello", command=self.say_hi)  
    16.         self.hi_there.pack(side=LEFT)  
    17.   
    18.     def say_hi(self):  
    19.         print "hi there, everyone!"  
    20.   
    21. root = Tk()  
    22.   
    23. app = App(root)  
    24.   
    25. root.mainloop()  
    26. root.destroy() # optional; see description below  

    当你运行程序时,会出现下面的窗口。

    如果你点击右边的按键, “hi there, everyone!” 将会输出在控制台。 如果你点击左边的按键,程序就会终止。

    程序讲解:

    这个简单的程序是用类写的. 构造器 (__init__ 方法) 接受一个主窗口作为参数(root), 然后创建了几个子控件。 构造器首先创建了一个 Frame控件。frame是一个简单的容器,在这个例子中,他仅仅用来防止其它2个控件。

    class App:
        def __init__(self, master):
            frame = Frame(master)
            frame.pack()
    

    我们通过Frame类创建一个实例,并把它保存为实例的局部变量 frame. 之后,我们对其使用pack方法使其可见。

    然后我们创建2个Button,作为frame的子控件。

    self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
    self.button.pack(side=LEFT)
    
    self.hi_there = Button(frame, text="Hello", command=self.say_hi)
    self.hi_there.pack(side=LEFT)
    

    这一次我们通过关键字参数的形式给构造函数船体几个参数。 第一个button的text属性为“QUIT”,并设置前景色为红色。第一个button的text属性为“Hello”.。这两个Button的command选型也都设置了参数。这个选项用来设置一个函数或者绑定的方法,当button被点击时,相应的函数或者方法就会调用。 

    这两个button实例作为实例属性存储。他们都使用pack方法,但这次还使用了 side=LEFT参数。这意味着他们将会被尽可能的放置在frame的左边; 第一个button会被放在frame的左边,第二个button会紧贴着第一个button放置。一般来说,控件被放置的位置都是相对于他们的主控件而言的。如果没有指定side选项,默认为side=TOP.

     “hello” button 的回调函数如下所示。当用鼠标点击button时,它至是简单的想控制台输出一行信息:

    def say_hi(self):
        print "hi there, everyone!"
    

    最后,我们写一些代码创建 Tk root 窗口, 并把它作为参数传递给App类,它会成为其它控件的父窗口。

    root = Tk()
    
    app = App(root)
    
    root.mainloop()
    root.destroy()
    

    调用 mainloop 使Tk进入事件循环, 当点击QUIT或者关闭窗口时程序才会终止。

    destroy只有你在特殊的环境下运行这个例子才需要;当时间循环被终止的时候,它会明确的释放这个窗口。 一些开发环境只有调用这个方法才会终止Python进程。

  • 相关阅读:
    HDU 1058
    Codeforces 349C
    HDU 2602
    HDU 2571
    HDU 2955
    HDU 2084
    HDU 1003
    HDU 1506 & 1505
    POJ 1854
    HDU 2095
  • 原文地址:https://www.cnblogs.com/monsteryang/p/6558523.html
Copyright © 2020-2023  润新知