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()

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM