我试图根据列表创建一些复选框,但看起来好像我搞砸了命令调用和按钮的可变方面.
我的代码是:
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.courses = ["CSE 4444", "CSE 4343"]
self.vars = []
self.parent.title("Homework Helper")
self.course_buttons()
self.pack(fill=BOTH, expand=1)
def course_buttons(self):
x = 0
y = 0
for i in range(0, len(self.courses)):
self.vars.append(IntVar())
cb = Checkbutton(self, text=self.courses[i],
variable=self.vars[i],
command=lambda: self.onClick(i))
cb.select()
cb.grid(column=x, row=y)
y = y+1
def onClick(self, place):
print place
if self.vars[place].get() == 1:
print self.courses[place]
Run Code Online (Sandbox Code Playgroud)
到目前为止的测试是在复选框打开时在控制台上打印课程,但它仅适用于第二个按钮"CSE 4343"按钮.当我与按钮"CSE 4444"交互时,没有打印任何内容.
此外,"place"值onClick始终为1,无论我是单击按钮"CSE 4343"还是按钮"CSE 4444".
我正在编写一个简单的程序,它接受命令行参数并将它们存储到char**中.我正在尝试更多地了解内存管理,但无法通过这个简单的绊脚石.我的程序应该将命令行argumetns复制到动态分配的char**中.但是我阵列中的第一个位置总是腐败.下面是代码及其打印内容:
if (strcmp(argv[1], "test") ==0)
{
test();
}
else
{
char ** file_names = malloc(10);
for(int i =0; i < argc-1; ++i)
{
file_names[i] = malloc(10);
strcpy(file_names[i], argv[i+1]);
printf("%s, %s\n", argv[i+1], file_names[i]);
}
printf("____________\n");
for(int i =0; i < argc-1; ++i)
{
printf("%s\n", file_names[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
出来的是:
what, what
test, test
again, again
wow, wow
____________
pK@??
test
again
wow
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?谢谢
有没有办法做一个if语句,其中一个数字与整个arraylist进行比较?我想要求用户输入一个数字,然后扫描数组列表中的相同数字,然后打印出数组列表中的数字.