📜  Tkinter – 只读条目小部件

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

Tkinter – 只读条目小部件

Python有许多框架来开发 GUI 应用程序,例如 PyQT、Kivy、Jython、WxPython、PyGUI 和 Tkinter。 Python tkinter 模块提供了多种选项来开发基于 GUI 的应用程序。 Tkinter 是开源的,可在Python许可下使用。 Tkinter 提供了开发 GUI 应用程序的最简单和最快的方法。 Tkinter 支持不同的小部件,其中的 Entry 小部件用于接受来自用户的输入。但是,在某些情况下,某些文本需要采用只读格式以防止用户进行更改。这可以通过 Entry 小部件和 Entry 小部件下可用的各种选项来实现。

在本文中,我们将看到 Tkinter 变量的使用。 Python变量可用于 Tkinter 小部件,但不提供 Tkinter 变量所提供的灵活性。 Tkinter 变量具有称为“跟踪”的独特功能,可用于跟踪对关联变量所做的更改。这对于跟踪工作时对变量所做的意外更改很有用。下面的代码演示了使用 Tkinter 创建只读 Entry 小部件。

  1. 导入 tkinter 模块
    import tkinter
  2. 导入 tkinter 子模块
    from tkinter import *
  3. 创建父小部件
    root = Tk()

    语法: Tk(screenName=None, baseName=None, className='Tk', useTk=1)
    参数:在本例中,Tk 类在没有参数的情况下被实例化。
    解释:
    此方法创建一个空白父窗口,顶部带有关闭、最大化和最小化按钮。

  4. 为入口小部件创建标签并将标签定位在父小部件中
    L1 = Label(root, text="User Name")
    L1.grid(row=0, column=0)
    L2 = Label(root, text="Password")
    L2.grid(row=1, column=0)

    语法:标签(主,**选项)
    范围:

    • master:父窗口(根)作为主窗口。
    • options: Label()方法支持的选项有text、anchor、bg、bitmap、bd、cursor、font、fg、height、width、image、justify、relief、padx、pady、textvariable、underline和wraplength。这里的文本选项用于显示条目小部件的名称。

    解释:
    标签小部件用于显示与小部件对应的文本或图像。屏幕上显示的文本可以使用标签小部件支持的其他选项进一步格式化。

    语法: grid(**options)
    范围:

    • options: grid() 方法下可用的选项可用于更改父窗口小部件中窗口小部件的位置,其中包括 row、rowspan、column、columnspan、padx、pady、ipadx、ipady 和 sticky。

    解释:
    grid() 方法将父窗口拆分为行和列,就像二维表一样。这里 grid() 方法指定了 Label 小部件在父窗口上的位置。

  5. 为 Entry 小部件创建 Tkinter 变量
    mystr = StringVar()

    语法: StringVar()
    参数:构造函数不带参数。要设置值,使用 set() 方法。
    解释:
    StringVar 是 Tkinter 中的内置变量类之一。 StringVar() 的默认值为空字符串“”。

  6. 设置字符串值
    mystr.set('username@xyz.com')

    语法:集合(字符串)
    范围:

    • 字符串:表示要与小部件关联的文本(此处为 'entry' 小部件)

    解释:
    由于 StringVar 类构造函数在对象创建期间不接受任何参数,因此 set() 方法用于更改 StringVar 类变量的值。每当需要更改字符串值并且更改的值会自动反映在关联的小部件中时,都会调用此方法。

  7. 创建条目小部件

    语法: Entry(master, **options)
    范围:

    • master:代表父部件(这里是根)。
    • options: Entry 小部件下可用的选项有 bg、bd、command、cursor、font、exportselection、justify、relief、highlightcolor、fg、selectbackground、selectforeground、selectborderwidth、show、xscrollcommand、state、textvariable 和 width。

    解释:
    此方法在父小部件上创建一个 Entry 小部件。条目小部件“条目”处于禁用状态,这意味着它处于只读模式并且用户无法更改。但是,Entry 小部件“passwd”处于正常状态并接受来自用户的输入,如果需要可以更改。 grid() 方法将条目小部件定位在父小部件中。

  8. 运行应用程序
    mainloop()

    语法: mainloop()
    解释:
    mainloop() 基本上就像一个无限循环。它用于运行应用程序。

完成程序

import tkinter
from tkinter import *
  
  
root = Tk()
  
L1 = Label(root, text="User Name")
L1.grid(row=0,column=0)
L2 = Label(root, text="Password")
L2.grid(row=1,column=0)
  
mystr = StringVar()
mystr.set('username@xyz.com')
  
entry = Entry(textvariable=mystr, 
              state=DISABLED).grid(row=0,
                                   column=1,
                                   padx=10,
                                   pady=10)
  
passwd = Entry().grid(row=1,column=1,
                      padx=10,pady=10)
mainloop()

输出
python-tkinter-read-only-widget