如何解决使用动态的ttk检查按钮,如何识别选择了哪些项目?
我正在创建一个从SQL数据库提取项目数据并将其导出到Excel文档的应用程序。该应用程序具有提取单个项目或一次选择多个项目的选项。
我正在运行代码,但是我不确定这是获得结果的最优雅的方法。该代码已从各种来源(主要是SO)中提取,我对它的理解不是100%...尤其是这一行:
我正在创建两个列表-一个用于保存IntVars,另一个用于保存Checkbutton的文本(文本是商品代码的串联,外加说明)。
单击“确定”按钮后,我将扫描Checkbuttons的整个列表,以查找“已选择”状态。找到后,我将参考项目列表以从“检查”按钮获取文本。然后将其附加到另一个列表,该列表由父对话框用来创建Excel文件。
同样,代码有效,但是我想知道这是否是实现它的正确方法? 我感到自己很亲近,但是有什么东西让我难以忘怀,只是不确定是什么!
所以,我的问题是:如何简化对Checkbutton文本的访问并能够检查按钮的#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <regex.h>
#include <errno.h>
int main() {
int reg;
regex_t regex;
const char *regexStr = "^[0-9]{1,3} +-?[0-9]{1,7}(\n|\r|\r\n)?$";
char *buffer = NULL; // no need to pre-allocate buffer
size_t size = 0;
ssize_t nread;
if (regcomp(®ex,regexStr,REG_EXTENDED)) {
fprintf(stderr,"Couldn't compile regular expression.\n");
return -1;
}
for (;;) {
errno = 0; // set errno so we can test it after getline
nread = getline(&buffer,&size,stdin);
if (nread < 0) {
if (errno == ENOMEM) {
// error if getline() couldnt allocate buffer
fprintf(stderr,"Couldn't allocate enough memory.\n");
return -1;
}
break;
}
if (strlen(buffer) != (size_t)nread) {
fprintf(stderr,"Invalid input: contains null bytes\n");
return -1;
}
reg = regexec(®ex,buffer,NULL,0);
if (reg == REG_NOMATCH) {
// input invalid if regular expression doesn't match line contents
fprintf(stderr,"Input invalid.\n");
return -1;
}
printf("%s",buffer);
}
printf("\n");
printf("Input was valid.\n");
return 0;
}
。
对话框的代码为:
state
非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。