Python TK编程第一部分 Hello Again
当你想写大一点的程序的时候,将你的代码封装到一个或者多个类里会是一个不错的办法。下面'hello world'这个例子来自Matt Conway的Tkinter Life Preserver.
- from Tkinter import *
- class App:
- def __init__(self, master):
- frame = Frame(master)
- frame.pack()
- 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)
- def say_hi(self):
- print "hi there, everyone!"
- root = Tk()
- app = App(root)
- root.mainloop()
- 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进程。
Python TK编程第一部分 Hello Again的更多相关文章
- 少儿编程:python趣味编程第一课
本文仅针对8-16岁的青少年,所以流程是按如何去教好中小学生走的,并不适合成人找工作学习,因为进度也是按照青少年走的 大家好,我是C大叔,从事少儿编程行业三年有余(2016年从事少儿编程行业,少儿编程 ...
- Python 中的 TK编程
可爱的 Python:Python 中的 TK编程 http://www.ibm.com/developerworks/cn/linux/sdk/python/charm-12/ python che ...
- Python 编程第一步
Python 编程第一步 在前面的教程中我们已经学习了一些 Python3 的基本语法知识,下面我们尝试来写一个斐波纳契数列. # Fibonacci series: 斐波纳契数列 # 两个元素的总 ...
- python核心编程一书笔记之第一篇
#!/usr/bin/env python# -*- coding:utf-8 -*- #env 是一个命令用来寻找系统中的python解释器.第二条解释使用utf-8编码 在类unix系统中允许py ...
- Python GUI 编程
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- Python GUI编程(Tkinter) windows界面开发
Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py 1 #!C:\Python27\python.e ...
- python GUI编程tkinter示例之目录树遍历工具
摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用 ...
- Python黑客编程2 入门demo--zip暴力破解
Python黑客编程2 入门demo--zip暴力破解 上一篇文章,我们在Kali Linux中搭建了基本的Python开发环境,本篇文章为了拉近Python和大家的距离,我们写一个暴力破解zip包密 ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
随机推荐
- python验证码识别(2)极验滑动验证码识别
目录 一:极验滑动验证码简介 二:极验滑动验证码识别思路 三:极验验证码识别 一:极验滑动验证码简介 近些年来出现了一些新型验证码,不想旧的验证码对人类不友好,但是这种验证码对于代码来说识别难度上 ...
- iOS中的GCD线程
一.什么是GCD 全称是Grand Central Dispatch ,纯C语言编写,提供非常多强大的函数,是目前苹果官网推荐的多线程开发方法,NSOperation 便是基于GCD的封装 ...
- UIAlertView和UIAlertController
UIAlertView 随着苹果上次iOS 5的发布,对话框视图样式出现在了我们面前,直到现在它都没有发生过很大的变化.下面的代码片段展示了如何初始化和显示一个带有“取消”和“好的”按钮的对话框视图. ...
- [UIApplication sharedApplication].keyWindow.rootViewController
一般来说 [UIApplication sharedApplication].keyWindow.rootViewController 会在 appDelegate 中初始化,并且整个应用运行过程中都 ...
- 一语点醒技术人:你不是 Google(转载)
转载链接:https://www.infoq.cn/article/2017/06/U-no-Google 在为问题寻找解决方案时要先充分了解问题本身,而不是一味地盲目崇拜那些巨头公司.Ozan On ...
- Git:SSH、SSH与HTTP区别、git常用命令
SSH1.首先需要检查你电脑是否已经有 SSH key cd ~/.sshls12.ssh表示ssh文件是个隐藏文件查看是否存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在 ...
- hisi mmz模块驱动讲解
一.概述 如图所示,在海思平台上将内存分为两个部分:os内存和mmz内存.os内存指:由linux操作系统管理的内存:mmz内存:由mmz驱动模块进行管理供媒体业务单独使用的内存,在驱动加载时可以指定 ...
- Windows 跟 Linux 文件共享:Samba 设置
用 Samba 服务器 https://my.oschina.net/u/3783115/blog/1919892?from=timeline https://blog.51cto.com/1372 ...
- 27.Java基础_多态
父类对象引用子类对象: Animal a=new Cat(); 多态中的转型 public class Animal { public void eat(){ System.out.println(& ...
- NOIP2018普及组复赛游记
2018年11月10日,NOIP2018普及组复赛. 这是我初中阶段最后一次复赛了. 和往常一样,我们在预定的早上7点,没有出发. 10分钟之后,人终于到齐了,于是出发了,一路无话. 到了南航,合照三 ...