当前位置:   article > 正文

Python自带的GUI(Tkinter)教程_python的gui在哪里

python的gui在哪里

1.Python Tkinter(GUI图形界面):

a. What’s Tkinter(Tkinter 是什么)?

Tkinter是Python自带的一个GUI库,他可以将我们在command line中的操作进行可视化操作。并且它简单的构造, 多平台, 多系统的兼容性, 能让它成为让你快速入门定制窗口文件的好助手. 它在 python 窗口视窗模块中是一款简单型的. 所以用来入门, 熟悉 窗口视窗的使用, 非常有必要.

b. Tkinter创建窗口以及标签按钮:

我们可以通过如下代码校验你的Tkinter包是否安装成功:

python -m tkinter # 如果安装成功,那么你的桌面会弹出一个窗口,如下:
  • 1

alt tk原始窗口

接下来,我们要自己创建一个窗口,并且在窗口中加入一个标签Label:

import tkinter as tk

window = tk.Tk() # 创建一个窗口对象
window.title('my first window') #给窗口命名
window.geometry('200x100') #定义窗口的长宽,geometry方法中传入字符串参数,字符串中应为长x宽(Note:x是小写字母x)

# Label(master = None, cnf = {}, **kw), kw参数是类似dict一样接收label组件定义的键值对
l = tk.Label(window, text='successful! created new Label', bg='green', font=('Arial', 12), width=25, height=4)
l.pack() #将定义好的label添加到window上

window.mainloop()  #mainloop实际上是使用while循环实现的,因为窗口的内容是会动态变化的

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

alt create window & Label

接下来我们继续在窗口上创建Button按钮,并且我们实现了点击一次按钮Label消失,再点击一次按钮Label重新显示:

import tkinter as tk

window = tk.Tk() # 创建一个窗口对象
window.title('my first window') #给窗口命名
window.geometry('200x100') #定义窗口的长宽,geometry方法中传入字符串参数,字符串中应为长x宽(Note:x是小写字母x)

# Label(master = None, cnf = {}, **kw), kw参数是类似dict一样接收label组件定义的键值对
#l = tk.Label(window, text='successful! created new Label', bg='green', font=('Arial', 12), width=25, height=4)
var = tk.StringVar() #将label中的文本动态化设置,可以利用var.set()方法设置textvariable
l = tk.Label(window, textvariable=var, bg='green', font=('Arial', 12), width=25, height=4)
l.pack() #将定义好的label添加到window上

is_Hidden = False # 设置一个flag变量,用来判断现在窗口的label是显示的还是未显示的
def hidden_me():
    global is_Hidden
    if is_Hidden == False:
        is_Hidden = True
        var.set('click me and hidden')
    else:
        is_Hidden = False
        var.set('')

var1 = tk.StringVar()
var1.set('hidden')
#Button(master, option = value, ..), command是点击后发生什么效果的函数
b = tk.Button(window, textvariable = var1, width = 12, height = 2, command = hidden_me)
b.pack()  # 将button显示在窗口中

window.mainloop()  #mainloop实际上是使用while循环实现的,因为窗口的内容是会动态变化的

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

点击Button之前:

点击Button之后:

再点击hidden Button,Label又会隐藏。

c. Tkinter在窗口中使用输入框Entry & 文本框Text:

我们在网页中经常会遇到输入框和文本框两种常用的表单项,那么,在Tkinter中有Entry和Text对应了这两种常用的框。我们接下来要做一个小案例(在输入框输入文本,然后设置两个button,button1是在你点击文本框内容的光标处插入输入框中的文本。button2是在文本框内容的末尾插入输入框的文本)

import tkinter as tk

window = tk.Tk()
window.title('My Window')
window.geometry('300x200')
e = tk.Entry(window, show = None) # show = None:输入字符可见, show = '*':
e.pack()

# 在光标处插入entry输入框的数据
def insert_point():
    var = e.get()
    t.insert('insert', var)

# 在文本末尾插入entry输入框的数据
def insert_end():
    var = e.get()
    t.insert('end', var)
b1 = tk.Button(window, text = 'insert point', width = 15, height = 2, command = insert_point)
b1.pack()
b2 = tk.Button(window, text = 'insert end', width = 15, height = 2,command = insert_end)
b2.pack()

t = tk.Text(window, height = 5) # height定义文本框有多少行
t.pack()

window.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

初始状态:

点击button1 在光标处插入:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mQWe3Mrh-1594744798665)(/Users/liyan/Library/Application Support/typora-user-images/image-20200712223347218.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svhHX0wk-1594744798666)(/Users/liyan/Library/Application Support/typora-user-images/image-20200712223421949.png)]

点击button2在文本框末尾插入:

这样就使用Entry & Text完成了一个小实例

Note:以上例子在PyCharm中运行,button上的文本不会显示,我的电脑是Mac,Python版本3.7+,在命令行运行脚本既可以看到button中的文本属性。大佬如果知道原因可以给我留言。

d. Tkinter中Listbox的使用:

我们经常在网页上使用列表框,就比如选择你在填写表单的时候,你需要填写你的学历,这时候会有一个下拉列表框,上面写着:初中毕业,中专,高中,大学等常见的学历选项,你下拉选择好,点击后就会自动给您填上,我们下面做一个小例子:使用Tikinter中的listbox实现点击下拉列表框中的value,在点击Button,将value打印到窗口设置的Label中。

import tkinter as tk

window = tk.Tk()
window.title('My Listbox')
window.geometry('300x200')

var1 = tk.StringVar()
l = tk.Label(window, textvariable = var1, bg = 'yellow', font=('Arial', 12), width=25, height=4)
l.pack()

def print_selection():
    tmp = lb.get(lb.curselection()) #curselection()表示的是获取当前列表所选中的
    var1.set(tmp) # 将当前所选中的listbox的value设置到Lable上。

b = tk.Button(window, text = 'print list selection', width = 12, height = 2, command = print_selection)
b.pack()
var2 = tk.StringVar()
var2.set(('first', 'second', 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/787416
推荐阅读
相关标签
  

闽ICP备14008679号