zoukankan      html  css  js  c++  java
  • tkinter学习-- 控件entry

    Entry控件

    Python Tkinter 文本框用来让用户输入一行文本字符串。

    • 你如果需要输入多行文本,可以使用 Text 组件。

    • 你如果需要显示一行或多行文本且不允许用户修改,你可以使用 Label 组件。

    语法

    语法格式如下:

    w = Entry( master, option, ... )
    • master: 按钮的父容器。

    • options: 可选项,即该按钮的可设置的属性。这些选项可以用键 = 值的形式设置,并以逗号分隔。

    序号可选项 & 描述
    1

    bg

    输入框背景颜色

    2

    bd

    边框的大小,默认为 2 个像素

    3

    cursor

    光标的形状设定,如arrow, circle, cross, plus 等

    4

    font

    文本字体

    5

    exportselection

    默认情况下,你如果在输入框中选中文本,默认会复制到粘贴板,如果要忽略这个功能刻工艺设置 exportselection=0。

    6

    fg

    文字颜色。值为颜色或为颜色代码,如:'red','#ff0000'

    7

    highlightcolor

    文本框高亮边框颜色,当文本框获取焦点时显示

    8

    justify

    显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTER

    9

    relief

    边框样式,设置控件3D效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。默认为 FLAT。

    10

    selectbackground

    选中文字的背景颜色

    11

    selectborderwidth

    选中文字的背景边框宽度

    12

    selectforeground

    选中文字的颜色

    13

    show

    指定文本框内容显示为字符,值随意,满足字符即可。如密码可以将值设为 show="*"

    14

    state

    默认为 state=NORMAL, 文框状态,分为只读和可写,值为:normal/disabled

    15

    textvariable

    文本框的值,是一个StringVar()对象

    16

    width

    文本框宽度

    17

    xscrollcommand

    设置水平方向滚动条,一般在用户输入的文本框内容宽度大于文本框显示的宽度时使用。





    #Entry文本框的使用
    
    windows=tk.Tk()
    windows.title('测试Entry文本框')
    windows.geometry('600x600')
    
    #文本框属性:
    #width=文本框宽度(可以觉得文本框是大小)
    # bd=文本框的边框大小(边界框)
    # bg、fg=文本框默认背景色、前景色
    Entry(width='20',bd='20',bg='yellow',fg='black').grid(row=0,column=0)
    #框体限定如斜体font= 字体字形、文字字号、文字字形、字形有overstrike/italic/bold/underline
    
    Entry(font=('宋体','10','overstrike')).grid(row=1,column=0) #划线
    
    Entry(font=('黑体','20','italic')).grid(row=2,column=0)  #斜体
    
    Entry(font=('宋体','30','bold')).grid(row=3,column=0)#加粗
    
    Entry(font=('宋体','40','underline')).grid(row=4,column=0) #下划线
    
    
    #文本框样式:文本框风格,如凹陷、凸起
    Label(text='FLAT').grid(row=5,column=0)
    Entry(relief=FLAT,bg='red',bd=10).grid(row=5,column=1)
    Label(text='sunken').grid(row=6,column=0)
    Entry(relief=SUNKEN,bg='yellow',bd=10).grid(row=6,column=1)
    Label(text='raised').grid(row=7,column=0)
    Entry(relief=RAISED,bg='orange',bd=10).grid(row=7,column=1)
    Label(text='groove').grid(row=8,column=0)
    Entry(relief=GROOVE,bg='pink',bd=10).grid(row=8,column=1)
    
    #文本框状态:state禁用状态,正常状态
    Label(text='禁用状态').grid(row=9,column=0)
    Entry(windows,state=DISABLED).grid(row=9,column=1) # 静止写入
    Label(text='正常').grid(row=10,column=0)
    Entry(windows,state=NORMAL).grid(row=10,column=1)   #正常
    
    
    #对文本框内文字的设定
    # Entry(windows,font=20,bd=5,highlightcolor='black').pack()#设置文本框点击后的边框颜色
    Label(text='点击后文本框变化').grid(row=11,column=0)
    Entry(windows,font=20,highlightthickness=10).grid(row=11,column=1) #设置文本框点击后的边框大小
    Label(text='设置选中文字的背景颜色').grid(row=12,column=0)
    Entry(windows,selectbackgroun='green').grid(row=12,column=1)#设置选中文字的背景颜色
    Label(text='设置选中文字的背景边框宽度').grid(row=13,column=0)
    Entry(windows,selectborderwidth=10).grid(row=13,column=1) #设置选中文字的背景边框宽度
    Label(text='设置选中文字的颜色').grid(row=14,column=0)
    Entry(windows,selectforeground='red').grid(row=14,column=1) #设置选中文字的颜色
    windows.mainloop()
    
    #Entry显示输入值如显示(*)
    root=tk.Tk()
    Label(text='设置show的值').grid(row=15,column=0)
    Entry(width=10,show='*').grid(row=15,column=1)
    root.mainloop()
    
    
    
    #Entryinsert的用法
    windows=tk.Tk()
    entry1=Entry(windows,width=8,show='#')
    entry1.insert(2,'today')
    entry1.pack()
    windows.mainloop()
    

      






     

     

     

     

    entry的方法:

    1.获取文本框的输入值,借助tk模块中的StringVar的实例化对象来实现

    textvariale=StringVar()这里StringVar()是不会返回entry中的的值,需要使用get()方法获取

    StringVar().set('设置某值') 

    StringVar().get('获取某值')

    #Entry 获取输入框的值 textvariable 这个参数很重要
    #通过实例化对象StringVar()来进行值得传导,点击按钮即可实现变化
    windows=tk.Tk()
    landString=StringVar()
    entry1=Entry(windows,width=10,textvariable=landString)
    entry1.pack()
    resulting=StringVar()
    Label(textvariable=resulting).pack()
    def change_func():
        resulting.set('{}'.format(landString.get()))
    Button(text='获取输入的值',command=change_func).pack()
    
    windows.mainloop()
    

     

     2.获取文本框输入值,通过Entry()实例对象的get方法来实现

    def  change_value():
        print(entry1.get())
    
    win=tk.Tk()
    entry1=Entry(win,width=10)
    entry1.pack()
    Button(win,text='点击改变',width=10,command=change_value).pack()
    
    win.mainloop()

     

    3..获取文本框输入值:通过Variable类的实例化,来实现entry内值的传递 ;通过messagebox里的showinfo函数显示展示功能

    #通过Variable类的实例化,来实现entry内值的传递
    #通过messagebox里的showinfo函数显示展示功能
    from tkinter.messagebox import  showinfo
    windows=tk.Tk()
    a=Variable(windows,value='')
    e=Entry(windows,textvariable=a)
    b=Button(windows,text='get',command=lambda *args:showinfo(message=a.get()))
    e.pack()
    b.pack()
    windows.mainloop()

     

    4.insert 与delete方法(但输入密码错误时可以清空文本)

    Entry().insert(插入位置=int,插入值=字符串)

    Entry().delete(删除起始位置=下标,删除结束位置=下标(END为最后一个默认0,end删除全部)))

    #Entry的delete方法和insert方法
    #insert方法通过StringVar()传递值
    windows=tk.Tk()
    cont=StringVar()
    entry=Entry(windows,width=15,textvariable=cont)
    def insert_func(choice):
        if choice==1:
            entry.insert(1,'tencent')
        elif choice ==2:
            entry.delete(0,END)  # self.tk.call(self._w, 'delete', first, last)
        else:
            print('error')
    entry.pack()
    Button(windows,text='company',width=15,command=lambda :insert_func(1)).pack() #(command=lambda 传值事件)
    windows.mainloop()
    

     

        

     4.简单的登录页面

    from  tkinter import  *
    from  tkinter import  messagebox
    class Application(Frame):
        def __init__(self,master=None):
            super().__init__(master)
            self.master=master
            self.grid()
            self.creatWidget()
    
        def creatWidget(self):
            self.label1=Label(self,text='登录')
            self.label1.grid(column=0,row=0)
            global  login
            login=StringVar()
            self.entry1=Entry(self,bd='2',textvariable=login)
            self.entry1.grid(column=1,row=0)
    
            self.label2=Label(self,text='密码')
            self.label2.grid(column=0,row=1)
            global  pw
            pw=StringVar()
            self.entry2=Entry(self,bd=2,textvariable=pw,show='*')
            self.entry2.grid(column=1,row=1)
    
            self.button=Button(self,text='登录',width=10,command=self.login)
            self.button.grid(row=2,columnspan=1,column=1)
        def  login(self):
            username=self.entry1.get()
            pwd=self.entry2.get()
            print(login,pw) #PY_VAR0 PY_VAR1
            #如果这里想要 login,pw,这需要login.get() ,pw.get()
            #不会直接返回值
            print(login.get(),pw.get())  #qwe 12
            if username=='qwe'and pwd=='1':
                messagebox.showinfo('登录成功')
            else:
                messagebox.showinfo('未能成功登录')
    root=Tk()
    app=Application(master=root)
    root.mainloop()
    

     

     

     

  • 相关阅读:
    httpclient的maven依赖
    阿里云maven仓库镜像
    log4j2在webapp项目中的配置
    web.xml中的filter标签
    mybatis在xml文件中处理大于号小于号的方法
    javaweb(三十八)——mysql事务和锁InnoDB(扩展)
    javaweb(三十八)——事务
    javaweb(三十七)——获得MySQL数据库自动生成的主键
    javaweb学习总结(三十六)——使用JDBC进行批处理
    JavaWeb(三十五)——使用JDBC处理Oracle大数据
  • 原文地址:https://www.cnblogs.com/yescarf/p/13858861.html
Copyright © 2011-2022 走看看