Mad Lib程序
单选框 复选框 按钮 标签 文本框的应用
#coding=utf-8
__author__ = 'minmin'
from Tkinter import * class Application(Frame):
def __init__(self,master):
Frame.__init__(self,master)
self.grid()
self.create_widgets() def create_widgets(self):
#创建说明标签
Label(self,text="Enter information for a new story").grid(row = 0,column = 0,columnspan = 2,sticky =W) #创建用于任命的标签和文本框
Label(self,text="Person:").grid(row = 1,column = 0,sticky = W)
self.person_ent =Entry(self)
self.person_ent.grid(row = 1,column = 1,sticky = W) #创建用于复数名词的标签和文本框
Label(self,text="Plural Noun:").grid(row = 2,column = 0,sticky = W)
self.noun_ent =Entry(self)
self.noun_ent.grid(row = 2,column = 1,sticky = W) #创建用于动词的标签和文本框
Label(self,text="Verb:").grid(row = 3,column = 0,sticky = W)
self.verb_ent =Entry(self)
self.verb_ent.grid(row =3,column = 1,sticky = W) #创建用于形容词的复选框
Label(self,text="Adjective(s):").grid(row = 4,column = 0,sticky = W) #创建itchy复选框
self.is_itchy = BooleanVar()
Checkbutton(self,text="itchy",variable=self.is_itchy).grid(row=4,column=1,sticky=W)
#创建joyous复选框
self.is_joyous = BooleanVar()
Checkbutton(self,text="joyous",variable=self.is_joyous).grid(row=4,column=2,sticky=W)
#创建electric复选框
self.is_electric = BooleanVar()
Checkbutton(self,text="electric",variable=self.is_electric).grid(row=4,column=3,sticky=W) #创建用于身体部位单选框的标签
Label(self,text="Body Part:").grid(row=5,column=0,sticky=W) self.body_part = StringVar()
self.body_part.set(None) #创建身体部位单选框
body_parts =["bellybtton","big toe","medulla oblongata"]
column =1
for part in body_parts:
Radiobutton(self,text=part,variable=self.body_part,value=part).grid(row=5,column = column,sticky = W)
column +=1 #提交按钮
Button(self,text="Click for story",command = self.tell_story).grid(row=6,column = 0,sticky = W) self.result_text = Text(self,width = 75,height =10,wrap = WORD)
self.result_text.grid(row=7,column=0,columnspan =4)
def tell_story(self):
#从GUI获取相应的值
person = self.person_ent.get()
noun = self.noun_ent.get()
verb = self.verb_ent.get()
adj =""
if self.is_itchy.get():
adj +="itchy,"
if self.is_joyous.get():
adj +="joyous,"
if self.is_electric.get():
adj +="electrci,"
body_part = self.body_part.get() #创建故事
story = "The famous explorer "
story +=person
story +=" had nearly given up a life-long quest to find The Lost City of "
story +=noun.title()
story +=" when one day ,the "
story += noun
story += " found "
story +=person +". "
story +="A strong, "
story += adj
story +="peculiar feeling overwhelmed the explorer. "
story +="After all this time,the quest was finallly over.A tear came to "
story += person +"'s "
story += body_part + "."
story +="And then ,the "
story += noun
story +=" promptly devoured "
story += person +"."
story +="The mpral of the story ? Becareful what you "
story += verb
story += " for." #显示故事
self.result_text.delete(0.0,END)
self.result_text.insert(0.0,story) #程序主体
root = Tk()
root.title("Longevity")
root.geometry("700x400")
app = Application(root)
root.mainloop()

Mad Lib程序的更多相关文章
- Python编程初学者指南|百度网盘免费下载|Python新手入门资料
Python编程初学者指南|百度网盘免费下载 提取码:9ozx 目录 · · · · · · 第1章 启程:Game Over程序1.1 剖析Game Over程序1.2 Python简介1.2.1 ...
- 《Python编程初学者指南》高清PDF版|百度网盘免费下载|Python基础
<Python编程初学者指南>|百度网盘免费下载| 提取码:03b1 内容简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python可以用于很多的领域,从科学计 ...
- Python编程初学者指南PDF高清电子书免费下载|百度云盘
百度云盘:Python编程初学者指南PDF高清电子书免费下载 提取码:bftd 内容简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python可以用于很多的领域,从科学计算 ...
- linux下对qt编写的程序进行部署
当我们完成程序设计之后,需要将可执行程序交付客户,而运行环境里面可能是没有相关支持库的,这个时候就涉及到部署的相关问题.对于我们在Linux下基于QT编写的图像处理程序,我们采用linuxdeploy ...
- 静态链接库(lib)、动态链接库(dll)与动态链接库的导入库(lib)
静态链接库与动态链接库相对应.动态链接库的导入库不同于以上两种库. 1.静态链接库(lib) 程序编译一般需经编辑.编译.连接.加载和运行几个步骤.在我们的应用中,有一些公共代码是需要反复使用 ...
- LINK : fatal error LNK1104: cannot open file "mfc42d.lib"
VC++6.0上建立了个基于MFC应用程序,在编译时候没出现错误,但在LINK的是时候出现这样的错误:Linking...LINK : fatal error LNK1104: cannot open ...
- 从程序员角度看ELF | Linux-Programming (转)
★概要: 这片文档从程序员的角度讨论了linux的ELF二进制格式.介绍了一些ELF执行 文件在运行控制的技术.展示了如何使用动态连接器和如何动态装载ELF. 我们也演示了如何在LINUX使用GNU ...
- 在Linux下使用linuxdeployqt发布Qt程序
一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...
- 使用Ant 和 Maven打包发布命令行程序(转载)
From:https://www.linux178.com/Java/maven-release.html 用Java写了一个命令行的小程序,使用的Intellij IDE是IDEA13原来一直使用A ...
随机推荐
- win10安装数据库:[INS-13001]
升级win10系统之后,需要重新安装Oracle,因为在安装Oralce11g时,使用64位的会出现各种不兼容问题,我每次安装都是使用32位的数据库. 在安装时点击setup.exe之后,出现了:[I ...
- Asp.Net之三层架构
三层架构之理论: 通常意义上讲的三层架构就是将整个项目应用划分为:表现层(UI),业务逻辑层(BLL),数据访问层(DAL).与传统的二层架构的区别在于在用户界面(UI)和数据库服务器之间,添加中间层 ...
- DOM缘起
DOM是现在按W3C标准的浏览器均实现的标准.HTML.CSS.DOM共同在结构.表现.交互上共同支撑起一个页面.当然,必须以用户为中心.平稳退化.逐渐增强.DOM的操作是通过JS来实现的.JS最初在 ...
- Manacher 算法
Manacher算法用于求回文子串,它的复杂度为O(n). 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了.在相邻的两个字符之间加进一个分隔符 '#' ,串的首尾也要加. 原 ...
- php7 install script
./configure --prefix=/home/admin/local/php7 --with-gd=/home/admin/local/libgd-2.1.1/ --with-jpeg-dir ...
- JavaWeb核心编程之Tomcat安装和配置
什么是JavaWeb 在Sun的Java Servlet规范中, 对Java Web应用做了这样的定义: "Java Web应用由一组Servlet, HTML页面, 类, 以及其他可以被绑 ...
- mysql触发器使用注意
1.在创建触发器的时候,语句中避免在一个select语句查询多个列,例如使用select a,b from table,应该分开使用select语句, 例如select a from table s ...
- sersync+inotify实时备份数据
Sersync项目简介与框架 简介 Sersync项目利用inotify与rsync技术实现对服务器数据实时同步的解决方案,其中inotify用于监控sersync所在服务器上文件系统的事件变化,rs ...
- [原创]linux简单之美(二)
原文链接:linux简单之美(二) 我们在前一章中看到了如何仅仅用syscall做一些简单的事,现在我们看能不能直接调用C标准库中的函数快速做一些"复杂"的事: section . ...
- C语言实践——学生信息管理
这是本人做的第一个实践项目,用的知识都是书上有的,没有很多很复杂的知识 同时因为没有学习 C语言 图形方面的知识,所以界面做得很丑,暂时先这样吧 源文件: #include <stdio.h&g ...