小编use*_*869的帖子

检查按钮和按钮:使用lambda

我试图根据列表创建一些复选框,但看起来好像我搞砸了命令调用和按钮的可变方面.

我的代码是:

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".

python user-interface tkinter

3
推荐指数
1
解决办法
703
查看次数

C中的内存管理命令行参数

我正在编写一个简单的程序,它接受命令行参数并将它们存储到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)

有人可以解释为什么会这样吗?谢谢

c command-line-arguments

2
推荐指数
1
解决办法
140
查看次数

Ifs和Arraylists

有没有办法做一个if语句,其中一个数字与整个arraylist进行比较?我想要求用户输入一个数字,然后扫描数组列表中的相同数字,然后打印出数组列表中的数字.

java

-5
推荐指数
1
解决办法
89
查看次数