婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python tkinter Entry控件的焦點移動操作

python tkinter Entry控件的焦點移動操作

熱門標簽:沈陽外呼系統呼叫系統 沈陽防封電銷卡品牌 富錦商家地圖標注 江西省地圖標注 如何申請400電話費用 武漢外呼系統平臺 沈陽人工外呼系統價格 池州外呼調研線路 外呼系統哪些好辦

話不多說。

代碼片:

# -*- coding: utf8 -*-
from tkinter import *
#####################################
###--------------tk----------------
class App:
    def __init__(self,master):
        frame = Frame(master)
        frame.pack(expand=1)
        self.e1 = Entry(frame) 
        self.e1.pack()   
        self.e2 = Entry(frame) 
        self.e2.pack()   
        
        self.e1.bind("Return>",handlerAdaptor(focus_cg,e2=self.e2))#tk類不能直接傳遞參數,需要lambda
def focus_cg(event,e2):
   e2.focus_set() #焦點移到e2
def handlerAdaptor(fun, **kwds):
#事件處理函數的適配器,相當于中介,那個event是從那里來的呢,我也納悶,這也許就是python的偉大之處吧
    return lambda event,fun=fun,kwds=kwds: fun(event, **kwds)
 
if __name__ == '__main__':
    root = Tk()
    app=App(root)
    root.mainloop()

Tkinter 事件綁定的,參數不能直接傳遞。全局變量可以使用。

不使用全局變量的方法:

self.btn = Button(frame,text=u'OK', command=lambda : handler(v=123))

事件綁定型:

self.e1.bind("Return>",handlerAdaptor(focus_cg,e2=self.e2))#tk類不能直接傳遞參數,需要lambda
def focus_cg(event,e2):
   e2.focus_set() #焦點移到e2
def handlerAdaptor(fun, **kwds):
#事件處理函數的適配器,相當于中介,那個event是從那里來的呢,我也納悶,這也許就是python的偉大之處吧
    return lambda event,fun=fun,kwds=kwds: fun(event, **kwds)

補充:Python之tkinter 文本框Entry的基本應用

Entry簡介

所謂的文本框Entry,通常是指單行的文本框,在GUI程序設計中,這是用于輸入的最基本控件,我們可以使用它輸入單行字符串,如果所輸入的字符串長度大于文本框的寬度,所輸入的文字會自動隱藏,造成部分內容無法顯示,碰到這種狀況時可以使用箭頭鍵移動鼠標光標到看不到的區域。

文本框限定的是單行文字,如果想要處理多行文字,需要使用控件中的text

它的語法格式:

Entry(父對象, options, ...)

第一個參數:父對象,表示這個文本框將建立在哪一個窗口內

第二個參數:options,參數如下

參數 含義
borderwidth 邊界寬度 默認是兩個像素
bd 邊界寬度 默認是兩個像素
background 背景色彩
bg 背景色彩
command 當用戶更改內容時,會自動執行此函數
cursor 當鼠標光標移至按鈕上時的形狀
exportselection 如果執行選取時,所選取的字符串會自動輸出至剪貼板 如果想要避免,可以設置exportselection=0
foreground 前景色彩
fg 前景色彩
font 字形
height 高,單位是字符高
highlightbackground 當功能按鈕獲取焦點時的背景顏色
highlightcolor 當工人按鈕取得焦點時的顏色
justify 當有多行文字時,最后一行文字的對齊方式
relief 可由此控制文字外框 默認是relief=FLAT
selectbackground 被選取字符串的背景色彩
selectborderwidth 選取字符串時的邊界寬度 預設是1
selectfroeground 被選取字符串的前景色彩
show 顯示輸入字符 例如,show='*'表示顯示星號,常用于輸入密碼字段
state 輸入狀態 默認是NORMAL表示可以輸入,DISABLE則表示無法輸入
textvariable 文字變量
width 寬,單位是字符寬
xscrollcommand 在X軸使用滾動條

Entry的基本應用

例子:建立標簽和文本框,輸入姓名和地址

import tkinter
root = tkinter.Tk()
label1 = tkinter.Label(root, text="姓名 :")
label2 = tkinter.Label(root, text="住址 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root)
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
root.mainloop()

運行結果:

設置grid(row=0),在沒有設置column=x的情況下,系統自動設置column=0

使用show 參數隱藏輸入的字符

其實Entry控件具有可以使用show參數設置隱藏輸入字符的特性,所以也常被應用在用于輸入密碼的時候

例子:密碼的輸入,用*隱藏

import tkinter
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
root.mainloop()

運行結果:

Entry 的 get 方法

Entry 有一個get()方法,可以利用這個方法來獲取目前Entry 的字符串內容

import tkinter
def getValue():
    print("賬號為{}, 密碼為{}".format(entry1.get(), entry2.get()))
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
buttonLogin = tkinter.Button(root, text="登錄", command=getValue)
buttonExit = tkinter.Button(root, text="退出", command=root.quit)
buttonLogin.grid(row=2, column=0, sticky=tkinter.W, padx=20)
buttonExit.grid(row=2, column=1)
root.mainloop()

運行結果:

我們輸入賬號密碼,點擊登錄

賬號為123456, 密碼為132456

控制臺就出現了我們所需要的的信息

Entry 的 insert() 方法

在設計GUI程序時,常常需要在建立Entry的文本框內默認建立輸入文字,在Widget控件中可以使用insert(index, s)方法插入字符串

其中s是所插入的字符串,字符串會插在index位置

例子:建立默認文字內容

import tkinter
def getValue():
    print("賬號為{}, 密碼為{}".format(entry1.get(), entry2.get()))
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
# 默認賬號內容
entry1.insert(0, "123456")
# 默認密碼內容
entry2.insert(0, "123456")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
buttonLogin = tkinter.Button(root, text="登錄", command=getValue)
buttonExit = tkinter.Button(root, text="退出", command=root.quit)
buttonLogin.grid(row=2, column=0, sticky=tkinter.W, padx=20)
buttonExit.grid(row=2, column=1)
root.mainloop()

運行結果:

Entry 的 delete() 方法

在tkinter模塊的應用中可以使用delete(first, last=None)方法刪除Entry內的從第first字符到last-1字符間的字符串,如果要刪除整個字符串可以使用delete(0, END)

如果刪除倒數第一個,我們可以用len()方法判斷長度,然后長度減一就行

例子:單擊刪除按鈕清空文本框內容

import tkinter
def getValue():
    print("賬號為{}, 密碼為{}".format(entry1.get(), entry2.get()))
# 刪除的方法
def deleteValue():
    entry1.delete(0, tkinter.END)
    entry2.delete(0, tkinter.END)
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
# 默認賬號內容
entry1.insert(0, "123456")
# 默認密碼內容
entry2.insert(0, "123456")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
buttonLogin = tkinter.Button(root, text="登錄", command=getValue)
# 調用刪除的方法
buttonExit = tkinter.Button(root, text="刪除", command=deleteValue)
buttonLogin.grid(row=2, column=0, sticky=tkinter.W, padx=20)
buttonExit.grid(row=2, column=1)
root.mainloop()

運行結果:

例子:刪除最后一個

def deleteValue():
    len_entry = len(entry1.get())
    entry1.delete(len_entry - 1)
    entry2.delete(0, tkinter.END)

運行結果:

如果只有一個參數的話,那這個參數將是first,如不是last,len_entry - 1相當于是從到底第一個開始刪除,一直到末尾

計算數學表達式使用 eval()

Python有一個非常好用的計算數學表達式的函數eval

該函數可以直接傳回此數學表達式的計算結果,它的語法格式:

"""expression為字符串"""
result = eval(expression)

例子:

import tkinter
def getValue():
    try:
        value = eval(entry.get())
        label2.configure(text="計算結果為:" + str(value))
    except:
        pass
root = tkinter.Tk()
label = tkinter.Label(root, text="請輸入數學表達式:")
label.pack(anchor=tkinter.W)
entry = tkinter.Entry(root)
entry.pack(pady=5)
label2 = tkinter.Label(root)
label2.pack()
button = tkinter.Button(root, text="計算", command=getValue)
button.pack(pady=5)
root.mainloop()

運行結果:

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Python tkinter 下拉日歷控件代碼
  • python中的tkinter庫彈窗messagebox詳解
  • Python GUI之如何使用tkinter控件
  • python基于tkinter實現gif錄屏功能
  • python項目--使用Tkinter的日歷GUI應用程序

標簽:株洲 銅川 呂梁 通遼 黑龍江 潛江 常德 阿里

巨人網絡通訊聲明:本文標題《python tkinter Entry控件的焦點移動操作》,本文關鍵詞  python,tkinter,Entry,控件,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python tkinter Entry控件的焦點移動操作》相關的同類信息!
  • 本頁收集關于python tkinter Entry控件的焦點移動操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 高青县| 姚安县| 镶黄旗| 买车| 嵊州市| 景洪市| 新邵县| 香格里拉县| 黄大仙区| 隆安县| 平原县| 元阳县| 名山县| 荆州市| 宁波市| 务川| 松江区| 黄冈市| 嘉鱼县| 武宁县| 金坛市| 射阳县| 安仁县| 四平市| 麦盖提县| 邵阳县| 耿马| 固原市| 常德市| 化隆| 怀远县| 临颍县| 保亭| 宁强县| 新蔡县| 黄大仙区| 金沙县| 中方县| 民丰县| 苏尼特左旗| 蒙自县|