上节总结

上节课我们学习了字符串。字符串有很多用途,可以表达网页地址、文件路径等。

字符串有替换、查找等方法。我们用替换完成了凯撒密码程序。在课程的最好,我们还了解了什么是字符集。世界通用的字符集是utf-8。

这节课,我们让程序离开黑洞洞的终端,展示到窗口界面上。赶紧一起学习吧!

什么是GUI

GUI是图形用户界面(Graphical User Interface)的意思。我们现在用的软件、程序、游戏都有用户界面。一个美观、简洁的用户界面是软件的核心组成部分。想想看,如果王者荣耀运行在黑白的终端上,暴君、大龙是俩豆腐块,还有多少人会有兴趣玩呢?

easyGUI

easyGUI是python内置的一个图形界面库,通过easyGUI,我们可以很容的开发出一个图形界面来。

  1. 什么是库呢?我们可以把库理解成别人为我们开发好的工具包。我们把工具包引入进来,就可以使用被人的帮我们开发好的工具了。
  2. 什么是import? 引入easyGUI很简单,我们直接用 import easygui就完成了easygui的引入。这里的import就是引入的意思,后续课程我们还用用import引入更多的python库。
  3. 画一个界面引入easygui后,我们就可以很容易的画一个界面了。
import easygui
easygui.msgbox('hello world')


easygui内置了很多的窗口空间。常用的有这几个:

  • msgbox 消息提示 easygui.msgbox('hello world')
  • ynbox 用户确认框 easygui.ynbox('hello world')
  • 展示图片
import easygui

image = "search.png"
msg = "Do you like this picture?"
choices = ["Yes", "No", "No opinion"]
reply = easygui.buttonbox(msg, image=image, choices=choices)
print(reply)


  • choicebox 选择框
msg ="What is your favorite flavor?"
title = "Ice Cream Survey"
choices = ["Vanilla", "Chocolate", "Strawberry", "Rocky Road"]
choice = choicebox(msg, title, choices)


  • multenterbox 输入框
import easygui

msg = "填写个人信息"
title = "注册"
fieldNames = ["姓名", "手机号"]
fieldValues = []
fieldValues = easygui.multenterbox(msg, title, fieldNames)
print("回答:", fieldValues)


  1. 24点升级版下面我们通过这几个控件完成一个图形版24点游戏。
import easygui

# 定义一个题库变量
question_bank = []
# 往题库里放入数字和对应的正确答案
question_bank.append([1, 6, 6, 12, '*++'])
question_bank.append([1, 1, 1, 8, '++*'])
question_bank.append([4, 4, 4, 4, '*++'])
question_bank.append([7, 1, 2, 2, '-**'])
question_bank.append([9, 2, 2, 10, '-*+'])
question_bank.append([7, 2, 1, 10, '**+'])

easygui.msgbox('24点游戏,填写运算符,让4个数字计算得到的结果是24', ok_button='开始游戏')
right_answer = 0
for question in question_bank:
  print('24 nums', question[0:4])
  msg = question[0:4]
  title = "24点"
  fieldNames = ["运算符1", "运算符2", "运算符3"]
  fieldValues = easygui.multenterbox(msg, title, fieldNames)
  if ''.join(fieldValues) == question[4]:
      right_answer = right_answer + 1
      easygui.msgbox('恭喜你,答对啦!')
  else:
      easygui.msgbox('很遗憾,打错了,正确答案是' + question[4])
easygui.msgbox('你总共答对了%d道题' % right_answer)