python - 尝试使用 Spinbox 和 RadioButtons 将列表的一部分添加到另一部分
问题描述
我最近一直在做一些事情,你有一个名字列表,只有当某个单选按钮被点击并按下按钮时才会发生。
from tkinter import *
main_window = Tk()
v = IntVar()
def preorder():
pass
preorder_button = Radiobutton(main_window, text = "PreOrder", indicatoron = 0,
width = 10,
padx = 20,
variable=v,
command=preorder,
value=1)
# Making a Spin wheel
wheel = Spinbox(main_window, from_=1, to=2, width = 3, bd=0, font = (24))
# Shopping cart list
shopping_cart = Text(main_window, width = 30, height = 10, borderwidth = 2, relief = 'groove')
# Making an 'Add To Cart' Button
var = 0
InvoiceList = []
A_List = ['Hello', 'Goodbye']
def AddToCart():
global var, InvoiceList
spinInt = int(wheel.get())
if v == 1:
InvoiceList.append(str(A_List[int(wheel.get()) - 1]))
print(InvoiceList)
shopping_cart.insert(END, InvoiceList[var] + '\n')
var = var + 1
AddCartButton = Button(main_window, text="Add To Cart", width=10, padx=20, command=AddToCart).grid(row=8, column=1, columnspan=2, sticky=SW)
preorder_button.grid(row = 3, column = 1)
wheel.grid(row = 3, column = 3, rowspan = 2)
shopping_cart.grid(row = 6, column = 1, columnspan = 4)
main_window.mainloop()
问题是,无论我做什么,我总是收到一个错误,说发票字符串中没有任何内容,所以我猜这是代码如何将第一个列表中的一部分添加到第二个列表的问题但是我不知道它有什么问题。
这是我得到的错误:
[]
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\jackb\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "c:/Users/jackb/Documents/UNI/IFB104/Assignment 2/online_shopping_app.py", line 332, in AddToCart
shopping_cart.insert(END, InvoiceList[var] + '\n')
IndexError: list index out of range
这段代码应该做的是,当单选按钮被选中并按下按钮时,它会根据旋转框设置的内容复制列表的一部分以供将来使用,然后在文本框中显示添加的项目用户看到
解决方案
过了一会儿我想通了。问题是 If 语句正在检查v
它应该检查的时间,v.get()
因为v
它本身只是 give back IntVar()
。你可以在这里看到这个当你做print(v)
vsprint(v.get())
因为v
它本身输出PY_VAR0
但v.get()
输出1
推荐阅读
- javascript - 如何使用 es6 every 返回嵌套数组的布尔值?
- python - 将 Pandas DataFrames 与不同列中的键合并
- reverse-proxy - 反向代理背后的 Acumatica 导致 GetFile.ashx 出现问题
- python - 有没有办法每 x 秒运行一次函数?(每秒输出)
- python - 如何在 peewee 中使用 backref
- excel - 如果逻辑测试包含 5 < x < 7 之类的区间,我该如何格式化 IFS 语句?
- node.js - Nodejs Promise“res.end 不是函数”错误
- reactjs - 在函数执行之前反应轮播更新索引
- c++ - 在这段代码片段中,将首先创建 A 类的哪些对象?
- python - 混合效应逻辑回归