PythonTkinter在我不知道其索引时从列表中删除项目

2024-10-04 01:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,目前正在学习Tkinter中的循环,并尝试构建pin代码GUI。 我想做的是,当按下back space按钮时,“<;”添加到列表中的最后一项“输入的Pin”将被删除,1个Asterix将从TXT窗口中删除?当我不知道列表中有多少项时,我想知道python中是否有一种特殊的方法来删除添加到列表中的最后一项。 提前谢谢我的代码在下面

import tkinter as tk
window = tk.Tk()
def PinEntry(x):
    global u
    global counter
    if u == 1:
        TxtWindow.delete("1.0", "end")
        u =  u+1
    if EntertedPin == DefaultPin:
            window.destroy()  
    if x in range (len(EntryKeyList)):
        EntertedPin.append (EntryKeyList [x])
        TxtWindow.insert (tk.END, "*")
        counter = counter +1
        
        if x == 2:
            EntertedPin.clear()
            TxtWindow.delete("1.0", "end")
            TxtWindow.insert (tk.END, "Enter Pin")
            u = 1
            coutner = 0
        if x == 0:
            EntertedPin.clear()
            TxtWindow.delete("1.0", "end")
            TxtWindow.insert (tk.END, "Enter Pin")
            u = 1
            counter = 0
        
        if x == 12:
            # Delete last number in the list and remove one asterix from the TxtWindow
        
        
EntertedPin = []
DefaultPin = [1,2,3,0]
u = 1
counter = -1
TxtWindow = tk.Text(window, relief = "sunken", width = 10, height = 1)
TxtWindow.insert (tk.END, "Enter Pin")
TxtWindow.grid (row = 1, column = 2)
x = 1
y = 1
a = 5
b = 4
c = 1
d = 3
e = 1
f = 2
g = 1
EntryKeyList = ["CLR", 0, "ENT", 1, 2, 3, 4, 5, 6, 7, 8, 9, "<" ]
for i in range (13):
    KeypadBtn = tk.Button(window, width = 5, height = 3, text = EntryKeyList[i], command = lambda x=i: PinEntry(x))
    if y <=3:
        KeypadBtn.grid  (row = a , column = x )
        x = x +1
        y=y +1
    elif y <= 6:
        KeypadBtn.grid  (row = b , column = c )
        c = c +1
        y=y+1
    elif y <= 9:
        KeypadBtn.grid  (row = d , column = e )
        e = e +1
        y=y+1


  elif y <=12:
        KeypadBtn.grid  (row = f , column = g )
        g = g +1
        y=y+1
    else:
        KeypadBtn.grid (row = 1, column = 3)
        
window.mainloop()

Tags: 列表ifcounterpincolumnwindowtkgrid
1条回答
网友
1楼 · 发布于 2024-10-04 01:28:11

命令将显示您正在查找的内容

TxtWindow.delete("end-2c", "end")
mylist=mylist[:-1] or mylist.pop()

但代码是错误的。退格无法将“x”添加到小部件

def PinEntry(x):
    global u
    global counter
    global EntertedPin
    global DefaultPin
    
    if u == 1:
        TxtWindow.delete("1.0", "end")
        u =  u+1
    
    
    if x in range (len(EntryKeyList)):        
        
        if x == 12:
            # Delete last number in the list and remove one asterix from the TxtWindow
            EntertedPin=EntertedPin[:-1]            
            TxtWindow.delete("end-2c", "end")
        
        # If the button is not number:
        else: 
            if x == 2:
                EntertedPin.clear()
                TxtWindow.delete("1.0", "end")
                TxtWindow.insert (tk.END, "Enter Pin")
                u = 1
                coutner = 0
            
            
            elif x == 0:
                EntertedPin.clear()
                TxtWindow.delete("1.0", "end")
                TxtWindow.insert (tk.END, "Enter Pin")
                u = 1
                counter = 0
            EntertedPin.append (EntryKeyList [x])
            TxtWindow.insert (tk.END, "*")
            counter = counter +1
    
    if EntertedPin == DefaultPin:
            window.destroy()  

相关问题 更多 >