Python 如果没有从多个列表框中选择列表框,则在tkinter UI中引发错误消息

Python 如果没有从多个列表框中选择列表框,则在tkinter UI中引发错误消息,python,user-interface,tkinter,listbox,Python,User Interface,Tkinter,Listbox,“新建项目”按钮打开一个对话框,我可以在其中输入新项目并保存到任一列表框中。必须选择单个列表框项作为条目的目标 我试图在下面的脚本中引入一个函数,该函数检查是否选择了任一列表框中的任何单个项目,如果没有选择,则会出现消息错误 我用checkSelection函数代码尝试了这一点,但它似乎不起作用 这是下面的代码,我尽量把它限制在最少的行 from tkinter import * from tkinter import messagebox def newItem(): root2 =

“新建项目”按钮打开一个对话框,我可以在其中输入新项目并保存到任一列表框中。必须选择单个列表框项作为条目的目标

我试图在下面的脚本中引入一个函数,该函数检查是否选择了任一列表框中的任何单个项目,如果没有选择,则会出现消息错误

我用checkSelection函数代码尝试了这一点,但它似乎不起作用

这是下面的代码,我尽量把它限制在最少的行

from tkinter import *
from tkinter import messagebox

def newItem():
    root2 = Tk()
    curs1 = lb1.curselection()
    curs2 = lb2.curselection()

    def checkSelection():
        if [curs1, curs2] is False:
            messagebox.showerror("error", "Select a List Box stooopid!")
    checkSelection()

    def saveclose():
        a = entry_1.get()
        if curs1 is not None:
            try:
                lb1.insert(curs1, a)
                root2.destroy()
            except:
                pass
        if curs2 is not None:
            try:
                lb2.insert(curs2, a)
                root2.destroy()
            except:
                pass

    entry_1 = Entry(root2)
    entry_1.grid(row=1, column=0, columnspan=5, rowspan=1, padx=5, pady=2, sticky=EW)
    saveButt = Button(root2, text="Ok", command=saveclose)
    saveButt.grid(row=6, column=1, sticky=E, padx=2, pady=2)

    root2.mainloop()

root = Tk()

newButt = Button(root, text="New Item", command=newItem)
newButt.pack(side=LEFT, padx=2, pady=2)

lb1 = Listbox(root, bg="green")
lb1items = ["ItemNumber1", "ItemNumber2", "ItemNumber3"]

for i in range(len(lb1items)):
    try:
        lb1.insert(i + 1, lb1items[i])
        lb1.pack(side=BOTTOM)
    except:
        pass

lb2 = Listbox(root, bg="blue")
lb2items = ["lb2 ItemNumber1", "lb2 ItemNumber2", "lb2 ItemNumber3"]
for j in range(len(lb2items)):
    try:
        lb2.insert(j + 1, lb2items[j])
        lb2.pack(side=BOTTOM)
    except:
        pass

root.mainloop()

您正在使事情复杂化-创建另一个
Tk
实例以请求字符串的调用可以通过使用
tkinter.simpledialog
来简化,如下所示:

import tkinter as tk
from tkinter import messagebox, simpledialog

root = tk.Tk()

def newItem():
    result = simpledialog.askstring("Add new","Enter new item")
    if result and any(s.curselection() for s in (lb1,lb2)):
        lb1.insert(tk.END,result) if lb1.curselection() else lb2.insert(tk.END,result)
    else:
        messagebox.showerror("error", "Select a List Box stooopid!")

newButt = tk.Button(root, text="New Item", command=newItem)
newButt.pack(side=tk.LEFT, padx=2, pady=2)

lb1 = tk.Listbox(root, bg="green")
lb1.pack(side=tk.BOTTOM)
lb1items = ["ItemNumber1", "ItemNumber2", "ItemNumber3"]

lb2 = tk.Listbox(root, bg="blue")
lb2.pack(side=tk.BOTTOM)
lb2items = ["lb2 ItemNumber1", "lb2 ItemNumber2", "lb2 ItemNumber3"]

for a,b in zip(lb1items,lb2items):
    lb1.insert(tk.END, a)
    lb2.insert(tk.END, b)

root.mainloop()