Python做GUI界面---仅记录

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:洪卫
#Blog web:https://www.cnblogs.com/shwee/p/9427975.html#
# remix:JianRobSim
 
import tkinter as tk  # 使用Tkinter前需要先导入
 
# 第1步,实例化object,建立窗口window
window = tk.Tk()
 
# 第2步,给窗口的可视化起名字
window.title('My Window Test')
 
# 第3步,设定窗口的大小(长 * 宽)
window.geometry('600x700')  # 这里的乘是小x


#---------------标签------------------------------#
# 第4步,在图形界面上设定标签
l = tk.Label(window, text='你好!this is Tkinter', bg='green', font=('Arial', 12), width=30, height=2)
# 说明: bg为背景,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
 
# 第5步,放置标签
l.pack()    # Label内容content区域放置位置,自动调节尺寸
# 放置lable的方法有:1)l.pack();按上下左右排
#                   2)l.place();定位



#----------------按钮----------------------------#
# 第1步,在图形界面上设定一个标签
var4 = tk.StringVar()    # 将label标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
l2 = tk.Label(window, textvariable=var4, bg='green', fg='white', font=('Arial', 12), width=30, height=2)
# 说明: bg为背景,fg为字体颜色,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
l2.pack()
 
# 定义一个函数功能(内容自己自由编写),供点击Button按键时调用,调用命令参数command=函数名
on_hit = False
def hit_me():
    global on_hit
    if on_hit == False:
        on_hit = True
        var4.set('you hit me,what do you want from me')
    else:
        on_hit = False
        var4.set('')
 
# 第2步,在窗口界面设置放置Button按键
b3= tk.Button(window, text='click me', font=('Arial', 12), width=10, height=1, command=hit_me)
b3.pack()

#------------------输入框----------------------------#
# 在图形界面上设定输入框控件entry并放置控件
e1 = tk.Entry(window, show='*', font=('Arial', 16))   # 显示成密文形式
e2 = tk.Entry(window, show=None, font=('Arial', 16))  # 显示成明文形式
e1.pack()
e2.pack()

#----------------文本显示----------------------------#
# 第1步,在图形界面上设定输入框控件entry框并放置
e = tk.Entry(window, show = None)#显示成明文形式
e.pack()
 
# 第2步,定义两个触发事件时的函数insert_point和insert_end(注意:因为Python的执行顺序是从上往下,所以函数一定要放在按钮的上面)
def insert_point(): # 在鼠标焦点处插入输入内容
    var = e.get()
    t.insert('insert', var)
def insert_end():   # 在文本框内容最后接着插入输入内容
    var = e.get()
    t.insert('end', var)
 
# 第3步,创建并放置两个按钮分别触发两种情况
b1 = tk.Button(window, text='insert point', width=10,
               height=2, command=insert_point)
b1.pack()
b2 = tk.Button(window, text='insert end', width=10,
               height=2, command=insert_end)
b2.pack()
 
# 第4步,创建并放置一个多行文本框text用以显示,指定height=3为文本框是三个字符高度
t = tk.Text(window, height=3)
t.pack()


#-------------------列表选择----------------------#
# 第1步,创建Listbox并为其添加内容
var5 = tk.StringVar()
var5.set((1,2,3,4)) # 为变量var2设置值
# 创建Listbox
lb = tk.Listbox(window, listvariable=var5)  #将var5的值赋给Listbox
# 创建一个list并将值循环添加到Listbox控件中
list_items = [11,22,33,44]
for item in list_items:
    lb.insert('end', item)  # 从最后一个位置开始加入值
lb.insert(1, 'first')       # 在第一个位置加入'first'字符
lb.insert(2, 'second')      # 在第二个位置加入'second'字符
lb.delete(2)                # 删除第二个位置的字符
lb.place(x=40,y=500,anchor='nw')
# 第2步,创建一个方法用于按钮的点击事件
def print_selection():
    value = lb.get(lb.curselection())   # 获取当前选中的文本
    var5.set(value)  # 为label设置值
# 第3步,创建一个按钮并放置,点击按钮调用print_selection函数
b1 = tk.Button(window, text='print selection', width=15, height=2, command=print_selection)
b1.place(x=240,y=560,anchor='nw')
# 第4步,在图形界面上创建一个标签label用以显示并放置
var5 = tk.StringVar()  # 创建变量,用var5用来接收鼠标点击具体选项的内容
l3 = tk.Label(window, bg='green', fg='yellow',font=('Arial', 13), width=10, textvariable=var5)
l3.place(x=400,y=570,anchor='nw')


 
#-------------------单按选钮-------------------------#
# 第1步,在图形界面上创建一个标签label用以显示并放置
var = tk.StringVar()    # 定义一个var用来将radiobutton的值和Label的值联系在一起.
l = tk.Label(window, bg='yellow', width=20, text='empty')
l.pack()
 
# 第2步,定义选项触发函数功能
def print_selection():
    l.config(text='You have selected ' + var.get())
 
# 第3步,创建三个radiobutton选项,其中variable=var, value='A'的意思就是,当我们鼠标选中了其中一个选项,把value的值A放到变量var中,然后赋值给variable
r1 = tk.Radiobutton(window, text='Option A', variable=var, value='A', command=print_selection)
r1.pack()
r2 = tk.Radiobutton(window, text='Option B', variable=var, value='B', command=print_selection)
r2.pack()
r3 = tk.Radiobutton(window, text='Option C', variable=var, value='C', command=print_selection)

#--------------------复选按钮-----------------------#
# 第4步,在图形界面上创建一个标签label用以显示并放置
l1 = tk.Label(window, bg='yellow', width=20, text='empty')
l1.pack()
 
# 第6步,定义触发函数功能
def print_selection():
    if (var1.get() == 1) & (var2.get() == 0):     # 如果选中第一个选项,未选中第二个选项
        l1.config(text='I love only Python ')
    elif (var1.get() == 0) & (var2.get() == 1):   # 如果选中第二个选项,未选中第一个选项
        l1.config(text='I love only C++')
    elif (var1.get() == 0) & (var2.get() == 0):   # 如果两个选项都未选中
        l1.config(text='I do not love either')
    else:
        l1.config(text='I love both')             # 如果两个选项都选中
 
# 第5步,定义两个Checkbutton选项并放置
var1 = tk.IntVar()  # 定义var1和var2整型变量用来存放选择行为返回值
var2 = tk.IntVar()
c1 = tk.Checkbutton(window, text='Python',variable=var1, onvalue=1, offvalue=0, command=print_selection)    # 传值原理类似于radiobutton部件
c1.pack()
c2 = tk.Checkbutton(window, text='C++',variable=var2, onvalue=1, offvalue=0, command=print_selection)
c2.pack()


#--------------------------------------------------#
# 主窗口循环显示
window.mainloop()
# 注意,loop因为是循环的意思,window.mainloop就会让window不断的刷新,如果没有mainloop,就是一个静态的window,传入进去的值就不会有循环,mainloop就相当于一个很大的while循环,有个while,每点击一次就会更新一次,所以我们必须要有循环
# 所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

效果:

猜你喜欢

转载自blog.csdn.net/weixin_39090239/article/details/110673364