Tkinter教程

打印 上一主题 下一主题

主题 680|帖子 680|积分 2040

Tkinter


  
   本文简朴先容了tkiner库的使用, 适合初学者入门, 适合用来做小工具, 比如计算器, 简朴的GUI等.
从目次我们可以找到Tkiner主要包罗两部分一个是主体框架,一个是窗口内容,接下来我们一起看看。
  参考博客【Python】Tkinter教程
由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简朴的图形界面 Tkinter 还是能应付自若。
   在下一篇文章中我们将使用Tkinter、socket、threading实现用python模仿多人聊天服务器以及客户端
  1. import tkinter
  2. top = tkinter.Tk()
  3. #进入消息循环
  4. top.mainloop()
复制代码

窗口主体框架

每一个 tkinter 应用的主体框架都可以包罗下面这部分. 界说 window 窗口 和 window的一些属性, 然后书写窗口内容, 最后执行window.mainloop让窗口活起来.
  1. import tkinter as tk
  2. window = tk.Tk()
  3. window.title('my window')
  4. window.geometry('500x500') #注意是x不是*
  5. window.mainloop()
复制代码

窗口内容

1. Label & Button(标签和按钮)

这次我们会建立一个用来形貌的标签 tk.Label, 比如:
  1. import tkinter as tk
  2. window = tk.Tk()
  3. window.title('my window')
  4. window.geometry('500x500')
  5. l = tk.Label(window,
  6.              text= 'Hello, This is Tkinter',
  7.              bg = 'pink',
  8.              font=('Arial', 12),
  9.              width=15, height=2)
  10. l.pack()
  11. window.mainloop()
复制代码

2. Button

  1. window = tk.Tk()
  2. window.title('my window')
  3. window.geometry('500x500')
  4. # 定义一个label
  5. var = tk.StringVar()
  6. l = tk.Label(window,
  7.              textvariable=var,
  8.              bg = 'pink',
  9.              font=('Arial', 12),
  10.              width=15, height=2)
  11. l.pack()
  12. on_hit = False
  13. # 定义一个按钮
  14. def hit_on():
  15.     global on_hit
  16.     if on_hit == False:
  17.         on_hit = True
  18.         var.set('You hit me')
  19.     else:
  20.         on_hit = False
  21.         var.set('')
  22. b = tk.Button(window,
  23.            text='点我',
  24.            width=15,height=2,
  25.            command=hit_on)
  26. b.pack()
  27. window.mainloop(
  28.    
  29. )
复制代码

点击之后:

3. Entry & Text(输入 文本框)

窗口主题框架

每一个tkinter应用的主体框架都包罗以下几部分:


  • 主窗口: window,及窗口的一些基本属性(标题、巨细)
  • 让窗口活起来: window.mainloop()
  1. import tkinter as tk
  2. window = tk.Tk()
  3. window.title('my window')
  4. # 窗口尺寸
  5. window.geometry('500x500')
  6. # 显示出来
  7. window.mainloop()
复制代码

窗口内容(窗口上的控件)



  • 创建按钮分别触发两种情况
  1. b1 = tk.Button(window,
  2.                text='insert point',
  3.                width=15,height=2,
  4.                command=insert_point)
  5. b1.pack()
  6. b2 = tk.Button(window,
  7.                text='insert end',
  8.                width=15,height=2,
  9.                command=insert_end)
  10. b2.pack()
复制代码


  • 创建输入框entry, 用户输入任何内容都显示为*
  1. e = tk.Entry(window,
  2.              show='*')
  3. e.pack()
复制代码


  • 创建一个文本框用于显示
  1. t = tk.Text(window, height=2)
  2. t.pack()
复制代码


  • 界说触发事件的函(注意:函数Python的执行顺序从上往下,所以函数肯定要放在按钮上面)
  1. def insert_point():
  2.     var = e.get()
  3.     t.insert('insert', var)
  4. def insert_end():
  5.     var = e.get()
  6.     t.insert('end', var)
复制代码


  • 完整代码
  1. import tkinter as tk window = tk.Tk()window.title('my window')# 窗口尺寸window.geometry('500x500')# 界说一个输入框entrye = tk.Entry(window,             show='None')e.pack()# 界说按钮功能def insert_point():
  2.     var = e.get()
  3.     t.insert('insert', var)
  4. def insert_end():
  5.     var = e.get()
  6.     t.insert('end', var)
  7. # 界说按钮b1 = tk.Button(window,
  8.                text='insert point',
  9.                width=15,height=2,
  10.                command=insert_point)
  11. b1.pack()
  12. b2 = tk.Button(window,
  13.                text='insert end',
  14.                width=15,height=2,
  15.                command=insert_end)
  16. b2.pack()
  17. # 界说文本框t = tk.Text(window,             height=2)t.pack()# 窗口显示window.mainloop()
复制代码

4. Listbox(列表框)

  1. import tkinter as tk
  2. window = tk.Tk()
  3. window.title('my window')
  4. window.geometry('500x500')
  5. # 创建一个label
  6. var1 = tk.StringVar()
  7. l = tk.Label(window,
  8.              bg='pink',
  9.              width=4,
  10.              textvariable=var1)
  11. l.pack()
  12. # 按钮事件
  13. def print_selection():
  14.     value = lb.get(lb.curselection())
  15.     var1.set(value)
  16. # 创建一个按钮
  17. b1 = tk.Button(
  18.     window,
  19.     text='print selection',
  20.     width=15,
  21.     height=2,
  22.     command=print_selection
  23. )
  24. b1.pack()
  25. # 创建一个Listbox和变量var2,并将var2的值赋给Listbox
  26. var2 = tk.StringVar()
  27. var2.set((11, 22, 33, 44))
  28. # 创建Listbox
  29. lb = tk.Listbox(
  30.     window,
  31.     listvariable=var2
  32. )
  33. # 创建一个list并将值循环添加到Listbox控件中
  34. list_items = [1, 2, 3, 4]
  35. for item in list_items:
  36.     lb.insert('end', item)
  37. lb.insert(1, 'first') #向lb(Listbox)中添加值
  38. lb.insert(2, 'second')
  39. lb.delete(2)
  40. lb.pack()
  41. window.mainloop()
复制代码

5. Radiobutton 选择按钮

  1. import tkinter as tk
  2. window = tk.Tk()
  3. window.title('my window')
  4. window.geometry('200x200')
  5. # 创建一个Label
  6. var = tk.StringVar()
  7. l = tk.Label(window,
  8.              bg = 'yellow',
  9.              width = 20,
  10.              height= 2,
  11.              text = 'empty')
  12. l.pack()
  13. # 实现将选择的选项显示在label
  14. def print_selection():
  15.     l.config(text='you have selected ' + var.get())
  16. # 创建几个Radiobutton
  17. r1 = tk.Radiobutton(window,
  18.                     text='Option A',
  19.                     variable=var,
  20.                     value='A',
  21.                     command=print_selection)
  22. r1.pack()
  23. r2 = tk.Radiobutton(window,
  24.                     text='Option B',
  25.                     variable=var,
  26.                     value='B',
  27.                     command=print_selection
  28. )
  29. r2.pack()
  30. r3 = tk.Radiobutton(window,
  31.                     text='Option C',
  32.                     variable=var,
  33.                     value='C',
  34.                     command=print_selection
  35. )
  36. r3.pack()
  37. window.mainloop()
复制代码

接下里我们将使用Tkinter、socket、threading实现用python模仿多人聊天服务器以及客户端

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

李优秀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表