Python中基于tkinter的GUI编程的基本概念与实例

时间:2024-04-11 18:25:51

        一、 tkinter的基本概念

        tkinter是python中自带的用于GUI编程的模块,tkinter是对图形库TK的封装,tkinter是跨平台的,既在linux下编写的程序可以不加修改地在windows下运行,它的优势在于可移植性。

         使用tkinter可以创建完整的GUI程序,在tkinter中可以直接使用文本框、按钮、标签等组件进行GUI编程,换句话说,要实现某个界面元素,只要调用对应的组件即可。tkinter是python中的一个模块,可以像其他模块在python的交互式shell中被导入tkinter模块被导入即可使用tkinter中的模块方法等。

        下文将使用pycharm演示最基础的九个GU程序代码,并在代码中附有注释,常用的组件和方法本文都有涉及。

             二、实例          

1,创建一个最简单的带标签和按钮的窗口。代码如下

import tkinter                                           #导入tkinter模块
root = tkinter.Tk()                                      #生成root主窗口
lable = tkinter.Label(root,text="hello,tkinter!")        #生成标签
lable.pack()                                             #将标签添加到root主窗口
button1 = tkinter.Button(root,text="Button1")            #生成标签
button1.pack(side=tkinter.LEFT)                          #将标签添加到root主窗口,并放在左边
button2 = tkinter.Button(root,text="Button2")            #生成标签
button2.pack(side=tkinter.RIGHT)                         #将标签添加到root主窗口,并放在左边
root.mainloop()                                          #进入消息循环

      运行结果如下:

Python中基于tkinter的GUI编程的基本概念与实例

2,在主窗口中创建各种不同的按钮,代码如下:

import tkinter
root = tkinter.Tk()

button1 = tkinter.Button(root,
                         anchor = tkinter.E,                        #制定文本的对齐方式
                         text = 'Button1',
                         width = 40,
                         height = 5)
button1.pack()

button2 = tkinter.Button(root,
                         text = 'Button2',
                         bg = 'blue')
button2.pack()

button3 = tkinter.Button(root,
                         text='Button3',
                         width = 14,
                         height = 1)
button3.pack()

button4 = tkinter.Button(root,
                         text='Button4',
                         width = 60,
                         height=5,
                         state = tkinter.DISABLED)                     #指定按钮为禁用模式
button4.pack()

root.mainloop()

运行结果如下:

Python中基于tkinter的GUI编程的基本概念与实例

3,创建不同类型的文本框

import tkinter
root = tkinter.Tk()
entry1 = tkinter.Entry(root,
                       show = '*')            #输入文本框中的字符被显示为*
entry1.pack()
entry2 = tkinter.Entry(root,
                       show = '#',
                       width=50)
entry2.pack()
entry3 = tkinter.Entry(root,
                       bg='red',                                  #将文本的背景色设置为红色
                       fg='blue')                                 #将文本的前景色设置为蓝色,前景色就是文本中字体的颜色
entry3.pack()
entry4 = tkinter.Entry(root,
                       selectbackground = 'red',                   #被选中时,文本的背景色变为红色
                       selectforeground = 'gray')
entry4.pack()
entry5 = tkinter.Entry(root,
                       state=tkinter.DISABLED)                     #文本框设置为禁用
entry5.pack()
edit1 = tkinter.Text(root,
                     selectbackground='red',
                     selectforeground='gray')
edit1.pack()
root.mainloop()

运行结果为:

Python中基于tkinter的GUI编程的基本概念与实例

4,创建不同类型的标签组件

import tkinter
root = tkinter.Tk()

label1 = tkinter.Label(root,
                       anchor = tkinter.E,
                       bg = 'blue',
                       fg = 'red',
                       text = 'python',
                       width = 30,
                       height = 5)
label1.pack()

label2 = tkinter.Label(root,
                       text = 'python GUI\ntkinter',
                       justify = tkinter.LEFT,              #设置多行文本为左对齐
                       width = 30,
                       height = 5)
label2.pack()

label3 = tkinter.Label(root,
                       text = 'python GUI\ntkinter',
                       justify = tkinter.RIGHT,            #设置多行文本为右对齐
                       width = 30,
                       height = 5)
label3.pack()

label4 = tkinter.Label(root,
                       text = 'python GUI\ntkinter',
                       justify = tkinter.CENTER,            #设置多行文本居中
                       width = 30,
                       height = 5)
label4.pack()

root.mainloop()

运行结果如下:

Python中基于tkinter的GUI编程的基本概念与实例

5,创建添加菜单的主窗口:

import tkinter
root = tkinter.Tk()
menu = tkinter.Menu(root)

submenu = tkinter.Menu(menu,tearoff = 0)             #生成下拉菜单
submenu.add_command(label="open")                    #向下拉菜单中添加open命令
submenu.add_command(label="save")
submenu.add_command(label="close")
menu.add_cascade(label="File",menu=submenu)          #将下拉菜单添加到菜单中

submenu = tkinter.Menu(menu,tearoff = 0)
submenu.add_command(label="copy")
submenu.add_command(label="paste")
submenu.add_separator()                              #向下拉菜单中添加分割符
submenu.add_command(label="cut")
menu.add_cascade(label="Edit",menu=submenu)          #将下拉菜单添加到菜单中

submenu = tkinter.Menu(menu,tearoff=0)
submenu.add_command(label="About")
menu.add_cascade(label="help",menu=submenu)

root.config(menu=menu)
root.mainloop()

运行结果如下:点击一下Edit就会看到分割线

Python中基于tkinter的GUI编程的基本概念与实例

6,插件弹出式菜单:

import tkinter
root = tkinter.Tk()

menu = tkinter.Menu(root,tearoff=0)                   #插件菜单
menu.add_command(label="Copy")                         
menu.add_command(label="paste")
menu.add_separator()                                 #向弹出式菜单中添加分隔符
menu.add_command(label="cut")
def popupmenu(event):                                   #定义右键事件的处理函数
    menu.post(event.x_root,event.y_root)                #显示菜单
root.bind("<Button-3>",popupmenu)                       #显示菜单
root.mainloop()

运行结果如下:右击一下就会看到效果

Python中基于tkinter的GUI编程的基本概念与实例

7,创建单选框与复选框((单选框就是一组相互排斥的选项,只能选择一项,就像选择题的ABCD选项一样),(复选框就是一个复选框组件表示两种不同状态,即选中一种状态,未选中一种状态))

import tkinter
root = tkinter.Tk()

r = tkinter.StringVar()                                            #使用Steingvar生成字符串变量用于单选框组件
r.set('1')                                                         #初始化变量值
radio = tkinter.Radiobutton(root,
                            variable = r,
                            value = '1',
                            text = 'Radio1')
radio.pack()
radio = tkinter.Radiobutton(root,
                            variable = r,
                            value = '2',
                            text = 'Radio2')
radio.pack()
radio = tkinter.Radiobutton(root,
                            variable = r,
                            value = '3',
                            text = 'Radio3')
radio.pack()
radio = tkinter.Radiobutton(root,
                            variable = r,
                            value = '4',
                            text = 'Radio4')
radio.pack()

c = tkinter.IntVar()                                               #使用IntVar生成字符串变量用于单选框组件
c.set(2)                                                           #初始化变量值
check = tkinter.Checkbutton(root,
                            text = 'Checkbutton',
                            variable = c,
                            onvalue = 1,
                            offvalue = 2)
check.pack()

root.mainloop()
print(r.get())
print(c.get())

运行结果为:

Python中基于tkinter的GUI编程的基本概念与实例

8,创建按钮形式的单选框复选框

import tkinter
root = tkinter.Tk()

r = tkinter.StringVar()
r.set('2')
radio = tkinter.Radiobutton(root,                                 #设置单选框组件
                            variable = r,                         #设置单选框关联的变量
                            value = '1',
                            indicatoron = 0,                      #将单选框设置为按钮模式
                            text = 'Dadio1')
radio.pack()
radio = tkinter.Radiobutton(root,
                            variable = r,
                            value = '2',
                            indicatoron = 0,                     #将单选框设置为按钮模式
                            text = 'Dadio2')
radio.pack()
radio = tkinter.Radiobutton(root,
                            variable = r,
                            value = '3',
                            indicatoron = 0,                     #将单选框设置为按钮模式
                            text = 'Dadio3')
radio.pack()
radio = tkinter.Radiobutton(root,
                            variable = r,
                            value = '4',
                            indicatoron = 0,                      #将单选框设置为按钮模式
                            text = 'Dadio4')
radio.pack()

c =  tkinter.IntVar()                                           #使用IntVar生成整型变量用于复选框
c.set(2)
check = tkinter.Checkbutton(root,
                            text = 'Checkbutton',
                            variable = c,                        #设置复选框关联的变量
                            indicatoron = 0,                     #将复选框设置为按钮模式
                            onvalue = 1,                         #选中为1
                            offvalue = 2)                        #未选中为二
check.pack()
root.mainloop()

运行结果为:

Python中基于tkinter的GUI编程的基本概念与实例

9,使用Canvas绘制图形:

import tkinter
root = tkinter.Tk()

canvas = tkinter.Canvas(root,
                        width = 600,
                        height = 480,
                        bg = 'white')

canvas.create_text(302,77,                                                      #使用crest_text绘制文字
                   text = 'use canvas',
                   fill = 'grey')                                               #文字颜色为灰色

canvas.create_text(300,75, 
                   text = 'use canvas',
                   fill = 'blue')

canvas.create_polygon(290,114,316,114,330,130,310,146,284,146,270,130)         #调用绘制六边形的方法

canvas.create_oval(280,120,320,140,                                            #调用绘制椭圆的方法
                   fill = 'white')

canvas.create_line(250,130,350,130)                                            #绘制直线

canvas.create_line(300,100,300,160)

canvas.create_rectangle(90,190,510,410,width = 5)                               #绘制矩形

canvas.create_arc(100,200,500,400,                                              #绘制圆弧
                  start = 0,extent = 240,                                       #设置圆弧起止角度
                  fill = "pink")                                               #设置填充色为粉红色

canvas.create_arc(103,203,500,400,
                  start = 241,extent = 118,
                  fill = 'red')
canvas.pack()                                                                   #将Canvas添加到主窗口
root.mainloop()

运行结果为:

Python中基于tkinter的GUI编程的基本概念与实例