亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

試圖讓 validate 命令與多個輸入一起工作

試圖讓 validate 命令與多個輸入一起工作

守著一只汪 2022-10-11 21:16:09
我對 Tkinter 的 validatecommands 完全不熟悉,但我已經做了一些研究,并希望在一個從一堆條目創建樹形圖的小部件中實現它。我想限制每個條目,以便用戶可以創建從 0 到最高行的數字列表,不包括同一行。因此,例如,第 0 行條目中不能有 0 或 12。到目前為止,我只嘗試限制輸入與行的值相同,但我無法讓它工作。我一定是錯誤地執行了驗證命令。任何幫助將非常感激。import tkinter as tkclass widget:    def __init__(self,master):        # vcmd = (master.register(self.validate),                # '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')        self.master = master        self.entryNumbers = tk.Entry(master,justify = tk.CENTER)        self.entryNumbers.insert(0, "5")        self.entryNumbers.grid(row = 0,column = 0,columnspan =2,sticky="EW")        self.createEntriesButton = tk.Button(master,text = "Create Entries",command = self.createEntries)        self.createEntriesButton.grid(row = 1, column = 0,columnspan = 2,sticky="EW")    def createEntries(self):        self.entryNumbers.grid_forget()        self.createEntriesButton.grid_forget()        self.entries = []        self.entryLabels = []        vcmd = self.master.register(self.validateEntry)        for i in range(int(self.entryNumbers.get())):            self.entryLabels.append(tk.Label(self.master,text = "Row {}".format(i)))            self.entryLabels[-1].grid(row = i,column = 0)            self.entries.append(tk.Entry(self.master, validatecommand=(vcmd,'%P',i)))            self.entries[-1].grid(row = i,column = 1)        self.addEntriesButton = tk.Button(self.master,text = "Add Entries",command = self.addEntry)        self.addEntriesButton.grid(row = i+1, column = 0,columnspan = 2,sticky="EW")另外, vcmd 可以是成員變量嗎?我只想初始化一次?
查看完整描述

1 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

我使用 lambda 函數解決了這個問題:


vcmd = lambda row:(self.master.register(self.validateEntry),'%P',row)


        for i in range(int(self.entryNumbers.get())):

            self.entryLabels.append(tk.Label(self.master,text = "Row {}".format(i)))

            self.entryLabels[-1].grid(row = i,column = 0)

            self.entries.append(tk.Entry(self.master, validate = "all", validatecommand=vcmd(i)))



查看完整回答
反對 回復 2022-10-11
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號