小编mar*_*rio的帖子

更高级别的Python GUI工具包,例如,为TreeView/Grid传递dict

使用PyGTK开始我的第一个Python宠物项目.虽然它是一个非常强大的GUI工具包,看起来很棒,但我有一些小小的烦恼.所以我考虑过渡到别的东西,因为它还不是太广泛.看看SOpython文档,但没有得到很好的概述.

PyGTK有什么好处:

  • 格莱德文件
  • self.signal_autoconnect({...})
  • self.get_widget()as __getattr__

然而,这让我很烦恼:

  • manual gobject.idle_add(lambda:...和False)
  • 没有保存应用程序/窗口状态的标准功能
  • TreeView需要构建数组
  • widget.get_selection().get_selected(),model.get_value(iter,liststore_index)

TreeView:因为这是主要的界面元素,所以它最让人分心.基本上我的应用程序构建了一个要显示的字典列表name = column + row => value.要使用GTK显示它,需要手动转换过程,订购,类型转换.这似乎是很多开销,我希望在这里有一些更面向对象的东西.PyGtk在gtk +之上有许多抽象,但仍然看起来相当低级.我更喜欢按原样传递我的字典,并以某种方式预定义列.(GtkBuilder可以预定义TreeView列,但这不能解决数据表示开销.)

当我在TreeView列表上看到mousclick时,我还必须将所有内容转换回我的应用程序数据结构.而且,如果从非主线程运行,PyGTK不会使用gobject.idle本身包装gtk +调用也很令人讨厌.现在有很多GUI代码我认为不应该是必要的,或者可以合理化.

那么,PyGTK上是否还有其他包装器.或者哪个其他工具包支持更简单的界面来显示Grid/TreeView.我已经阅读了很多关于wxPython是每个人最喜欢的东西,但它在Linux上不太成熟.和PyQt的似乎是大致相同的抽象水平PyGTK的.没有使用很多TkInter,所以不知道它是否有更简单的接口,但无论如何看起来都没有吸引力.和PyFLTK一样.睡衣听起来很迷人,但已经太过分了(桌面应用程序).

.

所以,GUI工具包用dict - > Grid显示.你会选哪个?

.

就像展出的那样,这是我当前的TreeView映射函数.一些作品,但我宁愿有一些标准:

    #-- fill a treeview
    #
    # Adds treeviewcolumns/cellrenderers and liststore from a data dictionary.
    # Its datamap and the table contents can be supplied in one or two steps.
    # When new data gets applied, the …
Run Code Online (Sandbox Code Playgroud)

python gtk user-interface pygtk

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

PHP 5.2 preg_match()编译失败

非常感谢一些帮助.我的主机服务器端更新导致我的评论表格抛出两个验证错误.第一个是:preg_match()返回警告:preg_match()[function.preg-match]:编译失败:在[脚本位置此处和行错误]中的偏移13处的字符类中的范围乱序 - 第二个是在主题检查处抵消14.

它在电子邮件地址检查中执行此操作:

if (preg_match('/[^a-zA-Z0-9_-.]/', $_POST['txtEmail']))
Run Code Online (Sandbox Code Playgroud)

和主题检查:

if (preg_match('/[^a-zA-Z0-9:?-. ]/', $_POST['txtSubject']))
Run Code Online (Sandbox Code Playgroud)

我不熟悉PHP,但可以剪切和粘贴!我的网站是frowey.com,这是联系我们的评论表,在托管操作系统更新后开始抛出错误.提前致谢.

php compilation preg-match

5
推荐指数
2
解决办法
6522
查看次数

正则表达式将散列括起来的“##WORD=123##”替换为方括号中的“[object word=123]”

我想用方括号替换主题标签,并在第一个方括号后添加一个单词,并且所有字符串都需要小写。

示例字符串:

$str = "This is some text  
<p>##IDOBJECT=784##</p> and another some text 
<p>##IDOBJECT=1509##</p>
<p>##LATESTARTICLESHOME=321##</p>
<p align=\"center\">##IDOBJECT=321##</p>";
Run Code Online (Sandbox Code Playgroud)

我想用 替换##IDOBJECT=123##格式化字符串[object idobject=123]。请注意,这里在第一个括号和字符串转换object为 后添加了额外的单词。我尝试使用此 正则表达式来查找这些字符串,但无法按照我的描述进行替换。[IDOBJECTidobject/(\##.*?\##)/

php regex

4
推荐指数
1
解决办法
145
查看次数

PHP 启动:无法加载动态库 'mysqli' 未定义符号:mysqlnd_global_stats

我的整个网站通过浏览器完美运行。我刚刚添加了一个 cron 作业,每次运行时都会触发此错误:

PHP Startup: Unable to load dynamic library 'mysqli' (tried: /usr/lib/php/20180731/mysqli (/usr/lib/php/20180731/mysqli: cannot open shared object file: No such file or directory), /usr/lib/php/20180731/mysqli.so (/usr/lib/php/20180731/mysqli.so: undefined symbol: mysqlnd_global_stats))
Run Code Online (Sandbox Code Playgroud)

不知道发生了什么。我已经使用浏览器和 cron 记录了 PHP 版本,结果是一样的:7.3.2-3+0~20190208150725.31+stretch~1.gbp0912bd

cron 有什么不同?我怎样才能解决这个问题?

php cron mysqli

4
推荐指数
2
解决办法
6877
查看次数

使用fread方法扩展SplFileObject

PHP5引入了面向对象的文件包装器SplFileObject.我想我刚刚发现为什么几乎没有人使用它.它纯粹是面向行的,没有fread()方法 - 相应的frwite似乎暗示了这一点.

所以现在我想知道我是否可以扩展它.但我不确定什么是更好的解决方法.将文件指针($ fp)折叠起来时,SplFileObject并不是特别有用 - 它可以是私有属性,也可以是ZE内部资源.那么我如何扩展它以获得一个fread方法呢?

  • 使用fgets()将 fread()实现为字符串收集循环,如果仅请求特定大小,则最终搜索,并且fgets读取太长,直到下一个\n换行.
  • 使用自定义构造函数,它会再次打开文件并存储辅助文件指针,以防我想调用fread()而不是父类方法.

我会选择fgets解决方案循环,但听起来既麻烦又缓慢,并提供更多潜在的陷阱.OTOH打开辅助文件指针似乎也不是一个好方法,也需要自定义析构函数.

php

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

如何检查字符串是否包含带有正则表达式的"bird"或"cat"?

请不要告诉我使用布尔值!来检查它.因为我想使用jquery插件在我的函数中做一些事情.我想修复它只有正则表达式部分......这可能吗?

php regex expression

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

PHP改变数据库的输出

我正在创建一个显示在表格中的计算机清单网站.我正在尝试更改输出显示,例如以下内容

echo "<td>".$row['WindowsVersion']."</td>\n";
Run Code Online (Sandbox Code Playgroud)

显示5.0或5.1或5.2或6.0或6.1

但我想要它显示

5.0 as 2000
5.1 as XP
5.2 as 2003
6.0 as Vista
6.1 as 7
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激

php

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

从php中获取字符串颜色的一些方法?

我有这样的字符串

$color="rgb(255, 255, 0)";
Run Code Online (Sandbox Code Playgroud)

我想在数组或三个不同的变量中获得值255,255,0.例如

$arr[0]=255;
$arr[1]=255;
$arr[2]=0;
Run Code Online (Sandbox Code Playgroud)

我认为可以在正则表达式中完成.但我很难受.谢谢

php

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

php - 正则表达式获取DIV标签中的内容

您好,感谢您查看我的问题.我需要从HTML片段中获取一些数据.这个源是一个受信任的/结构化的,所以我认为在这个HTML中使用正则表达式是可以的.我认为Dom和php中的其他高级功能是一种矫枉过正.

以下是HTML代码段的格式.

<div id="d-container">
  <div id="row-custom_1">
     <div class="label">Type</div>
     <div class="content">John Smith</div>
     <div class="clear"></div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

在上面,请注意前2个DIV标签设置了ID.可能有几个row-custom_1像div标签,所以我需要逃避它们.

我的正则表达式实际上非常差,所以我期待你的帮助,从上面的html片段中抓住约翰史密斯.

它可能是这样的

<div * id="row-custom_1" * > * <div * class="content" * >GRAB THIS </div>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在正则表达式中做到这一点.约翰史密斯部分肯定不会包含任何HTML.它来自一个值得信赖的来源,它会删除所有html并以上述格式提供数据.

我可以理解正则表达式无论如何都不是处理HTML的好主意.非常感谢你的帮助.

30分钟后编辑:很多很棒的人建议使用HTML解析器,所以我做了; 像魅力一样工作.因此,如果有人带着类似的问题来到这里,作为愚蠢的问题作者,我建议使用DOM来完成工作.

html php

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

PHP:替换所有实例

我有一个看起来像这样的chatlog文件(名称代表屏幕名称,文字是他们的聊天字符串)

name: some text
name2: more text
name: text
name3: text
Run Code Online (Sandbox Code Playgroud)

我想把所有名字都染成:红色.
例如:<font color=red>myname:</fontcolor> hello 我该怎么做?

我不知道为什么,但这段代码在冒号之后对所有内容进行着色

echo preg_replace('/(.*?):/', "<font color=#F00>$1</font>:", $output);
Run Code Online (Sandbox Code Playgroud)

php regex replace preg-replace

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