from tkinter import *
window_main = Tk()
def window_open():
def chgColor(event):
lst["bg"] = lst.get(lst.curselection())
window_public = Tk()
window_public.title("New Page")
lbl = Label(window_public, text = "Today is a good day and I'm a gooie!")
lbl.grid(padx = 20, pady = 10)
var = StringVar()
lst = Listbox(window_public, height = 5, width = 10, listvariable = var)
lst.grid(padx = 50, pady = 20)
list = ["red", "blue", "yellow", "pink", "green", "white", "black"]
var.set(tuple(list))
lst.bind("<<ListboxSelect>>", chgColor)
window_public.mainloop()
window_main.title("Main")
window_main_btn = Button(window_main, text = "To New Page", command = window_open)
window_main_btn.grid(padx = 50, pady = 20)
window_main.mainloop()
错误:
Traceback (most recent call last):
File "C:\ComputerSoftware\python3.6\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:/Users/Shawn/PycharmProjects/gammaC@meL/gamma1.py", line 7, in chgColor
lst["bg"] = lst.get(lst.curselection())
File "C:\ComputerSoftware\python3.6\lib\tkinter\__init__.py", line 2792, in get
return self.tk.call(self._w, 'get', first)
_tkinter.TclError: bad listbox index "": must be active, anchor, end, @x,y, or a number
我是python的初学者,遇到了问题。当我点击按钮时,我会转到新页面。然后,当我点击列表框时,我得到一个追溯。我无法理解追溯的含义,无法修复它。
但我发现当我删除关于 window_main
的代码时,它会运行。
答案 0 :(得分:0)
我不是列表框专家,但我认为现在列表没有填充。您需要将数据插入列表中。而不是var.set(tuple(list))
,请使用
for c in list:
lst.insert(END,c)
如果我改变它,那么它适用于我。
答案 1 :(得分:0)
for index, element in enumerate(list):
lst.insert(index,element)
你以前是这样的:
def chgColor(event):
lst["bg"] = lst.get(lst.curselection())
现在你应该像这样:
def chgColor(event):
if lst.curselection() != ():
lst["bg"] = lst.get(lst.curselection())
当 lst.get 收到一个空元组时会发生该错误。
答案 2 :(得分:-1)
我不是Tkinter专家,我知道这不是一个多窗口问题,但你声称你点击一个按钮并进入一个新页面,所以你的问题可能与我要说的内容有关。
我似乎记得有关单个应用程序窗口的内容,然后在用户操作和事件上使用新框架填充该窗口。每个帧都是一个类,然后你会有一些循环,允许你用一个新的框架“刷新”windows内容。
当我found this guy and his videos on youtube时,它确实帮助我学习了Tkinter并克服了新手GUI编程问题(比如多个窗口)。按照他的播放列表,您将立即进行排序。同样表达你对这个家伙的支持也没有什么坏处......所以喜欢他的视频或订阅他的频道。
请包含您在帖子中收到的Traceback错误。这对尝试调试代码的任何人都非常有帮助。 Tkinter Gods也可以告诉你你到底出错的地方。祝你好运!
编辑:好像ViG就在它上面。