你懂GUI?

GUI英文全称(Graphical User Interface)就是图形用户界面的意思。 python GUI库 TKinter:TKinter模块是Python的标准TkGUI工具包的接口。 其实有点像那个网页一样,就是有按钮,输入框,标签,文本等等组成的。

都会反思活动非诉讼IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

 
 
  1. Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:



  2. Tkinter Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口


  3.          .Tk Tkinter 可以在大多数的 Unix 平台下使用,


  4.          同样可以应用在 Windows Macintosh 系统里。


  5.          Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。



  6. wxPythonwxPython 是一款开源软件,


  7.         Python 语言的一套优秀的 GUI 图形库,


  8.         允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。



  9. JythonJython 程序可以和 Java 无缝集成。除了一些标准模块,


  10.       Jython 使用 Java 的模块。Jython 几乎拥有标准的Python


  11.       中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 SwingAWT或者 SWT


  12.       Jython 可以被动态或静态地编译成 Java 字节码。

我们现在来解决一下我们这个小案例的可能会用到的一些组件 组件属性,以及几何管理。

组件

控件 描述

Button         按钮控件; 在程序中显示按钮。Canvas         画布控件; 显示图形元素如线条或文本Checkbutton    多选框控件;用于在程序中提供多项选择框Entry          输入控件;用于显示简单的文本内容Frame          框架控件;在屏幕上显示一个矩形区域,多用来作为容器 Label          标签控件;可以显示文本和位图Listbox        列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户Menubutton     菜单按钮控件,由于显示菜单项。Menu           菜单控件;显示菜单栏,下拉菜单和弹出菜单Message        消息控件;用来显示多行文本,与 label 比较类似Radiobutton    单选按钮控件;显示一个单选的按钮状态Scale          范围控件;显示一个数值刻度,为输出限定范围的数字区间Scrollbar      滚动条控件,当内容超过可视化区域时使用,如列表框。.Text           文本控件;用于显示多行文本Toplevel       容器控件;用来提供一个单独的对话框,和 Frame 比较类似Spinbox        输入控件;与 Entry 类似,但是可以指定输入范围值PanedWindow    PanedWindow 是一个窗口布局管理的插件,可以包含一个或者多个子控件。LabelFrame     labelframe 是一个简单的容器控件。常用与复杂的窗口布局。tkMessageBox   用于显示你应用程序的消息框。

标准属性

属性 描述

Dimension    控件大小;Color        控件颜色;Font         控件字体;Anchor       锚点;Relief       控件样式;Bitmap       位图;Cursor       光标;

几何管理

几何方法 描述

pack()     包装;grid()     网格;place()    位置;

我们应该如何去创建一个GUI程序呢?不用急, 代码步骤如下:

# 导入使用的GUI模块 Tkinter# 创建GUI的主要应用程序入口# 添加控件并设置相应的属性# 编写触发事件响应代码

接下来 Ken 就来带你撸一把: 导入使用的GUI模块 Tkinter 创建GUI的主要应用程序入口

from tkinter import *root = Tk()root.mainloop()


接下来就是 设置相应的属性

from tkinter import * root = Tk()root['background'] = 'yellow'root['height'] = 330root['width'] = 450root['cursor'] = 'coffee_mug'root.title('我的第一个窗口程序')root.resizable(False,False)root.mainloop()

程序运行之后,就会出现一坨黄黄的(像极了粑粑),你懂的


添加控件

我们为窗口添加一个控件 用于设置提示文本

from tkinter import *root = Tk(className="登绿")label1 = Label(root)label1['text'] = "Hello World"label2 = Label(root)label2['text'] = "志学Python"label1.pack() # label1显示出来label2.pack() # label2显示出来root.mainloop()

程序运行之后就会出现 "Hello World 志学Python"


猜字游戏程序

 
 
  1. # -*- coding: utf-8 -*-

  2. import tkinter as tk

  3. import random


  4. number= random.randint(100,999)

  5. num=0

  6. maxnum=999

  7. minnum=100

  8. running=True


  9. def btnCloseClick(event):

  10.    root.destroy()


  11. def btnRestartClick(event):

  12.    global number

  13.    global running

  14.    global num

  15.    global maxnum

  16.    global minnum

  17.    number = random.randint(100,999)

  18.    running = True

  19.    num = 0

  20.    labelChange("请输入100到999之间任意整数:")

  21.    entry_num.delete(0,'end')

  22.    labelRange('目前的范围是[%d,%d]'%(minnum,maxnum))

  23.    print(number)


  24. def btnGuessClick(event):

  25.    global num

  26.    global running

  27.    global maxnum

  28.    global minnum

  29.    if running:

  30.        answer = int(entry_num.get())

  31.        if answer == number:

  32.            labelChange("恭喜答对了!")

  33.            num+=1

  34.            running = False

  35.            numGuess()

  36.        elif answer < number:

  37.            num+=1

  38.            labelChange("小了哦")

  39.            if answer>minnum:

  40.                minnum=answer  

  41.        else:

  42.            num+=1

  43.            labelChange("大了哦")

  44.            if answer<maxnum:

  45.                maxnum=answer

  46.        labelRange('目前的范围是[%d,%d]'%(minnum,maxnum))        

  47.    else:

  48.        labelChange('你已经答对啦.')



  49. def numGuess():

  50.    if num == 1:

  51.        labelChange('好棒!一次答对!')


  52.    elif num < 9:

  53.        labelChange('好厉害,尝试次数:'+str(num))


  54.    elif num < 19:

  55.        labelChange('还行,尝试次数:'+str(num))

  56.    else:

  57.        labelChange('您都试了超过20次了。。。。尝试次数:'+str(num))


  58. def labelChange(vText):

  59.    label_info.config(label_info,text=vText)


  60. def labelRange(cText):

  61.    label_range.config(label_range,text=cText)


  62. root = tk.Tk(className="猜数字游戏")

  63. root.geometry("400x150+200+200")

  64. frame1 = tk.Frame(root)

  65. label_info = tk.Label(frame1,width="60")

  66. label_range = tk.Label(frame1,width="20")

  67. label_info.pack()

  68. label_range.pack()

  69. frame1.pack(side = "top",fill = "x")


  70. frame2 = tk.Frame(root)

  71. entry_num = tk.Entry(frame2,width="40")

  72. btnGuess = tk.Button(frame2,text="确定")

  73. entry_num.pack(side = "left")

  74. entry_num.bind('<Return>',btnGuessClick)

  75. btnGuess.bind('<Button-1>',btnGuessClick)

  76. btnGuess.pack(side = "left")

  77. frame2.pack(side = "top",fill = "x")



  78. frame3 = tk.Frame(root)

  79. btnClose = tk.Button(frame3,text="关闭")

  80. btnRestart=tk.Button(frame3,text="重玩")

  81. btnClose.bind('<Button-1>',btnCloseClick)

  82. btnClose.pack(side="left")

  83. btnRestart.bind('<Button-1>',btnRestartClick)

  84. btnRestart.pack()

  85. frame3.pack(side = "top")


  86. labelChange("请输入100到999之间任意整数:")

  87. labelRange('目前的范围是[%d,%d]'%(minnum,maxnum))

  88. entry_num.focus_set()

  89. print(number)


  90. root.mainloop()

图片


猜你喜欢

转载自blog.51cto.com/15067249/2576224