📜  Python GUI – tkinter

📅  最后修改于: 2022-05-13 01:55:46.987000             🧑  作者: Mango

Python GUI – tkinter

Python为开发 GUI(图形用户界面)提供了多种选择。在所有的 GUI 方法中,tkinter 是最常用的方法。它是Python随附的 Tk GUI 工具包的标准Python接口。带有 tkinter 的Python是创建 GUI 应用程序的最快和最简单的方法。使用 tkinter 创建 GUI 是一项简单的任务。
要创建 tkinter 应用程序:

  1. 导入模块 – tkinter
  2. 创建主窗口(容器)
  3. 将任意数量的小部件添加到主窗口
  4. 在小部件上应用事件触发器。

导入 tkinter 与导入Python代码中的任何其他模块相同。请注意, Python 2.x 中模块的名称是“Tkinter”,而在Python 3.x 中它是“tkinter”。

import tkinter

在使用 GUI 创建Python应用程序时,用户需要记住两种主要方法。

  1. Tk(screenName=None, baseName=None, className='Tk', useTk=1):创建主窗口,tkinter提供了一个方法'Tk(screenName=None, baseName=None, className='Tk', useTk= 1)'。要更改窗口的名称,您可以将 className 更改为所需的名称。用于创建应用程序主窗口的基本代码是:
    m=tkinter.Tk() where m is the name of the main window object
  2. mainloop():当您的应用程序准备好运行时,会使用一种名为 mainloop() 的方法。 mainloop() 是一个无限循环,用于运行应用程序,等待事件发生并在窗口未关闭时处理该事件。
    m.mainloop()
    import tkinter
    m = tkinter.Tk()
    '''
    widgets are added here
    '''
    m.mainloop()
    

tkinter 还提供对小部件几何配置的访问,可以在父窗口中组织小部件。主要有三个几何管理器类。

  1. pack() 方法:它将小部件组织成块,然后放入父小部件中。
  2. grid() 方法:它在放入父小部件之前将小部件组织成网格(类似表格的结构)。
  3. place() 方法:它通过将小部件放置在程序员指定的特定位置来组织小部件。

您可以将许多小部件放入您的 tkinter 应用程序中。一些主要的小部件解释如下:

  1. 按钮:要在您的应用程序中添加按钮,使用此小部件。
    一般语法是:
    w=Button(master, option=value)

    master 是用来表示父窗口的参数。
    有许多选项用于更改按钮的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • activebackground :设置按钮在光标下时的背景颜色。
    • activeforeground :设置按钮在光标下时的前景色。
    • bg :设置他正常的背景颜色。
    • 命令:调用一个函数。
    • font :设置按钮标签上的字体。
    • image :设置按钮上的图像。
    • width :设置按钮的宽度。
    • height :设置按钮的高度。
    import tkinter as tk
    r = tk.Tk()
    r.title('Counting Seconds')
    button = tk.Button(r, text='Stop', width=25, command=r.destroy)
    button.pack()
    r.mainloop()
    

    输出:

  2. 画布:用于绘制图片和其他复杂的布局,如图形、文本和小部件。
    一般语法是:
    w = Canvas(master, option=value)
    master is the parameter used to represent the parent window.

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • bd :以像素为单位设置边框宽度。
    • bg :设置正常的背景颜色。
    • cursor :设置画布中使用的光标。
    • highlightcolor : 设置焦点高亮显示的颜色。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    from tkinter import *
    master = Tk()
    w = Canvas(master, width=40, height=60)
    w.pack()
    canvas_height=20
    canvas_width=200
    y = int(canvas_height / 2)
    w.create_line(0, y, canvas_width, y )
    mainloop()
    

    输出:

  3. CheckButton:通过向用户显示多个选项作为切换按钮来选择任意数量的选项。一般语法是:
    w = CheckButton(master, option=value)

    有许多选项可用于更改此小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • 标题:设置小部件的标题。
    • activebackground :设置小部件在光标下时的背景颜色。
    • activeforeground :设置小部件在光标下时的前景色。
    • bg : 设置他正常的背景隐写术

      休息

      密码:

      附加文件:nd 颜色。

    • 命令:调用一个函数。
    • font :设置按钮标签上的字体。
    • image :在小部件上设置图像。
    from tkinter import *
    master = Tk()
    var1 = IntVar()
    Checkbutton(master, text='male', variable=var1).grid(row=0, sticky=W)
    var2 = IntVar()
    Checkbutton(master, text='female', variable=var2).grid(row=1, sticky=W)
    mainloop()
    

    输出:

  4. 条目:用于输入用户的单行文本条目。对于多行文本输入,使用文本小部件。
    一般语法是:
    w=Entry(master, option=value)
    

    master 是用来表示父窗口的参数。
    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • bd :以像素为单位设置边框宽度。
    • bg :设置正常的背景颜色。
    • cursor :设置使用的光标。
    • 命令:调用一个函数。
    • highlightcolor : 设置焦点高亮显示的颜色。
    • width :设置按钮的宽度。
    • height :设置按钮的高度。
    from tkinter import *
    master = Tk()
    Label(master, text='First Name').grid(row=0)
    Label(master, text='Last Name').grid(row=1)
    e1 = Entry(master)
    e2 = Entry(master)
    e1.grid(row=0, column=1)
    e2.grid(row=1, column=1)
    mainloop()
    

    输出:

  5. 框架:它充当容纳小部件的容器。它用于对小部件进行分组和组织。一般语法是:
    w = Frame(master, option=value)
    master is the parameter used to represent the parent window.

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • highlightcolor :设置小部件必须聚焦时焦点突出显示的颜色。
    • bd :以像素为单位设置边框宽度。
    • bg :设置正常的背景颜色。
    • cursor :设置使用的光标。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    from tkinter import *
      
    root = Tk()
    frame = Frame(root)
    frame.pack()
    bottomframe = Frame(root)
    bottomframe.pack( side = BOTTOM )
    redbutton = Button(frame, text = 'Red', fg ='red')
    redbutton.pack( side = LEFT)
    greenbutton = Button(frame, text = 'Brown', fg='brown')
    greenbutton.pack( side = LEFT )
    bluebutton = Button(frame, text ='Blue', fg ='blue')
    bluebutton.pack( side = LEFT )
    blackbutton = Button(bottomframe, text ='Black', fg ='black')
    blackbutton.pack( side = BOTTOM)
    root.mainloop()
    

    输出:

  6. 标签:是指显示框,您可以在其中放置任何可以根据代码随时更新的文本或图像。
    一般语法是:
    w=Label(master, option=value)
    master is the parameter used to represent the parent window.

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • bg :设置他正常的背景颜色。
    • bg设置他正常的背景颜色。
    • 命令:调用一个函数。
    • font :设置按钮标签上的字体。
    • image :设置按钮上的图像。
    • width :设置按钮的宽度。
    • height ”设置按钮的高度。
    from tkinter import *
    root = Tk()
    w = Label(root, text='GeeksForGeeks.org!')
    w.pack()
    root.mainloop()
    

    输出:

  7. 列表框:它向用户提供一个列表,用户可以从中接受任意数量的选项。
    一般语法是:
    w = Listbox(master, option=value)
    master is the parameter used to represent the parent window.

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • highlightcolor :设置小部件必须聚焦时焦点突出显示的颜色。
    • bg :设置他正常的背景颜色。
    • bd :以像素为单位设置边框宽度。
    • font :设置按钮标签上的字体。
    • image :在小部件上设置图像。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    from tkinter import *
      
    top = Tk()
    Lb = Listbox(top)
    Lb.insert(1, 'Python')
    Lb.insert(2, 'Java')
    Lb.insert(3, 'C++')
    Lb.insert(4, 'Any other')
    Lb.pack()
    top.mainloop()
    

    输出:

  8. MenuButton :它是自上而下菜单的一部分,一直停留在窗口上。每个菜单按钮都有自己的功能。一般语法是:
    w = MenuButton(master, option=value)
    master is the parameter used to represent the parent window.

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • activebackground :设置鼠标悬停在小部件上时的背景。
    • activeforeground :当鼠标悬停在小部件上时设置前景。
    • bg :设置他正常的背景颜色。
    • bd :设置指标周围的边框大小。
    • cursor :当鼠标悬停在菜单按钮上时出现光标。
    • image :在小部件上设置图像。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    • highlightcolor :设置小部件必须聚焦时焦点突出显示的颜色。
    from tkinter import *
      
    top = Tk()
    mb =  Menubutton ( top, text = "GfG")
    mb.grid()
    mb.menu  =  Menu ( mb, tearoff = 0 )
    mb["menu"]  =  mb.menu
    cVar  = IntVar()
    aVar = IntVar()
    mb.menu.add_checkbutton ( label ='Contact', variable = cVar )
    mb.menu.add_checkbutton ( label = 'About', variable = aVar )
    mb.pack()
    top.mainloop()
    

    输出:

  9. Menu :用于创建应用程序使用的各种菜单。
    一般语法是:
    w = Menu(master, option=value)
    master is the parameter used to represent the parent window.

    有许多选项可用于更改此小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • title : 设置小部件的标题。
    • activebackground :设置小部件在光标下时的背景颜色。
    • activeforeground :设置小部件在光标下时的前景色。
    • bg :设置他正常的背景颜色。
    • 命令:调用一个函数。
    • font :设置按钮标签上的字体。
    • image :在小部件上设置图像。
    from tkinter import *
          
    root = Tk()
    menu = Menu(root)
    root.config(menu=menu)
    filemenu = Menu(menu)
    menu.add_cascade(label='File', menu=filemenu)
    filemenu.add_command(label='New')
    filemenu.add_command(label='Open...')
    filemenu.add_separator()
    filemenu.add_command(label='Exit', command=root.quit)
    helpmenu = Menu(menu)
    menu.add_cascade(label='Help', menu=helpmenu)
    helpmenu.add_command(label='About')
    mainloop()
    

    输出:

  10. Message : 多行不可编辑的文本。它的工作原理与 Label 相同。
    一般语法是:
    w = Message(master, option=value)
    master is the parameter used to represent the parent window.
    

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • bd :设置指标周围的边框。
    • bg :设置他正常的背景颜色。
    • font :设置按钮标签上的字体。
    • image :在小部件上设置图像。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    from tkinter import *
    main = Tk()
    ourMessage ='This is our Message'
    messageVar = Message(main, text = ourMessage)
    messageVar.config(bg='lightgreen')
    messageVar.pack( )
    main.mainloop( )
    

    输出:

  11. RadioButton:用于为用户提供多选选项。它为用户提供了几个选项,用户必须选择一个选项。
    一般语法是:
    w = RadioButton(master, option=value)
    

    有许多选项可用于更改此小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • activebackground :设置小部件在光标下时的背景颜色。
    • activeforeground :设置小部件在光标下时的前景色。
    • bg :设置他正常的背景颜色。
    • 命令:调用一个函数。
    • font :设置按钮标签上的字体。
    • image :在小部件上设置图像。
    • 宽度:以字符为单位设置标签的宽度。
    • 高度:以字符为单位设置标签的高度。
    from tkinter import *
    root = Tk()
    v = IntVar()
    Radiobutton(root, text='GfG', variable=v, value=1).pack(anchor=W)
    Radiobutton(root, text='MIT', variable=v, value=2).pack(anchor=W)
    mainloop()
    

    输出:

  12. 比例:它用于提供一个图形滑块,允许从该比例中选择任何值。一般语法是:
    w = Scale(master, option=value)
    master is the parameter used to represent the parent window.
    

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • cursor :当鼠标悬停在小部件上时更改光标模式。
    • activebackground :当鼠标悬停在小部件上时设置小部件的背景。
    • bg :设置他正常的背景颜色。
    • orient :根据需要设置为HORIZONTAL或VERTICAL。
    • from_ :设置刻度范围的一端的值。
    • to :设置刻度范围另一端的值。
    • image :在小部件上设置图像。
    • width :设置小部件的宽度。
    from tkinter import *
    master = Tk()
    w = Scale(master, from_=0, to=42)
    w.pack()
    w = Scale(master, from_=0, to=200, orient=HORIZONTAL)
    w.pack()
    mainloop()
    

    输出:

  13. 滚动条:它指的是滑动控制器,用于实现列出的小部件。
    一般语法是:
    w = Scrollbar(master, option=value)
    master is the parameter used to represent the parent window.
    

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • width :设置小部件的宽度。
    • activebackground :设置鼠标悬停在小部件上时的背景。
    • bg :设置他正常的背景颜色。
    • bd :设置指标周围的边框大小。
    • cursor :当鼠标悬停在菜单按钮上时出现光标。
    from tkinter import *
    root = Tk()
    scrollbar = Scrollbar(root)
    scrollbar.pack( side = RIGHT, fill = Y )
    mylist = Listbox(root, yscrollcommand = scrollbar.set )
    for line in range(100):
       mylist.insert(END, 'This is line number' + str(line))
    mylist.pack( side = LEFT, fill = BOTH )
    scrollbar.config( command = mylist.yview )
    mainloop()
    

    输出:

  14. 文本:编辑多行文本并设置其显示方式的格式。
    一般语法是:
    w  =Text(master, option=value)
    

    有许多用于更改文本格式的选项。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • highlightcolor :设置小部件必须聚焦时焦点突出显示的颜色。
    • insertbackground :设置小部件的背景。
    • bg :设置他正常的背景颜色。
    • font :设置按钮标签上的字体。
    • image :在小部件上设置图像。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    from tkinter import *
    root = Tk()
    T = Text(root, height=2, width=30)
    T.pack()
    T.insert(END, 'GeeksforGeeks\nBEST WEBSITE\n')
    mainloop()
    

    输出:

  15. TopLevel:这个小部件由窗口管理器直接控制。它不需要任何父窗口即可工作。一般语法是:
    w = TopLevel(master, option=value)
    

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • bg :设置他正常的背景颜色。
    • bd :设置指标周围的边框大小。
    • cursor :当鼠标悬停在菜单按钮上时出现光标。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    from tkinter import *
    root = Tk()
    root.title('GfG')
    top = Toplevel()
    top.title('Python')
    top.mainloop()
    

    输出:

  16. SpinBox:它是“Entry”小部件的一个条目。在这里,可以通过选择数字的固定值来输入值。一般语法是:
    w = SpinBox(master, option=value)
    

    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • bg :设置他正常的背景颜色。
    • bd :设置指标周围的边框大小。
    • cursor :当鼠标悬停在菜单按钮上时出现光标。
    • command :调用一个函数。
    • width :设置小部件的宽度。
    • activebackground :设置鼠标悬停在小部件上时的背景。
    • disabledbackground :当鼠标悬停在小部件上时禁用背景。
    • from_ :设置范围的一端的值。
    • to :设置范围另一端的值。
    from tkinter import *
    master = Tk()
    w = Spinbox(master, from_ = 0, to = 10)
    w.pack()
    mainloop()
    

    输出:

  17. PannedWindow它是一个容器小部件,用于处理排列在其中的窗格数量。一般语法是:
    w = PannedWindow(master, option=value)
    

    master 是用来表示父窗口的参数。
    有许多选项可用于更改小部件的格式。选项的数量可以作为以逗号分隔的参数传递。下面列出了其中一些。

    • bg :设置他正常的背景颜色。
    • bd :设置指标周围的边框大小。
    • cursor :当鼠标悬停在菜单按钮上时出现光标。
    • width :设置小部件的宽度。
    • height :设置小部件的高度。
    from tkinter import *
    m1 = PanedWindow()
    m1.pack(fill = BOTH, expand = 1)
    left = Entry(m1, bd = 5)
    m1.add(left)
    m2 = PanedWindow(m1, orient = VERTICAL)
    m1.add(m2)
    top = Scale( m2, orient = HORIZONTAL)
    m2.add(top)
    mainloop()
    

    输出: