小编Mal*_*olm的帖子

检测线程在python应用程序中运行的时间?

我们如何检测线程在python应用程序中运行的时间?

动机:我们最近正在调试一个大型Python应用程序,该应用程序有几个客户提供的模块,这些模块没有源代码.对我们(以及我们的客户!)不感兴趣,其中一个模块将在非常特定(和未记录)的条件下启动线程.这些线程引起意想不到的副作用,以意想不到的方式改变了我们 如果不是我的团队坚持找出副作用来自哪里的任务,那么整个调试场景将会很有趣:)

我们终于发现当其中一个线程引发了一个未捕获的错误时发生了什么.如果没有发生这种情况,我们仍然会把头发拉出来.

因此,这就是为什么我们正在寻找一种方法来检测应用程序中线程的存在.

以下是我们提出的一些可能的技术以及相应的挑战:

  1. Grep线程/线程的源代码.挑战:我们并不总是能够访问源代码.即使我们可以在源代码中找到线程创建的实例,我们仍然需要一种实时技术来检测线程当前是否处于活动状态.

  2. 在sys.modules中查找线程或线程.挑战:只确保加载这些模块 - 并不能证明线程当前正在运行.

  3. Monkey-patch Python标准线程/线程库,为我们提供线程创建时的线索.挑战:仅告诉我们是否已创建线程 - 不提供有关线程当前是否正在运行的任何信息.

谢谢!马尔科姆

python multithreading

6
推荐指数
1
解决办法
3899
查看次数

Py2exe:在library.zip或exe文件本身中嵌入静态文件,并在运行时透明地访问它们

有没有办法让py2exe在library.zip和/或exe文件本身(使用zipfile = None)中嵌入静态文件(和/或静态文件的子目录),然后在运行时透明地从代码中访问这些嵌入的静态文件?

谢谢你,马尔科姆

python py2exe

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

如何发现将RTF十六进制文字转换为Unicode时要使用的代码页

我正在解析由Word 2003+生成的RTF 1.5+文件,这些文件可能包含其他语言的内容.此内容通常编码为十六进制文字(\'xx).我想将这些文字转换为unicode值.

我通过查找ansicpg(\ ansi\ansicpg1252)来了解我的文档代码页.

当我使用ansicpg代码页解码为Unicode,多语言(如法国)似乎转换成我期望的Unicode字符值.

但是,当我看到俄语文本(如下所示)时,代码页1252将内容解码为乱码.

\ f277\lang1049\langfe1033\langnp1049\insrsid5989826\charrsid6817286\'D1 \' F2\'F0 \' E0\'编\' E8\'F6 \' FB\'E1 \' E5\'E7 \' 编\" E0\'E7 \' E2\'E0 \' 编\ 'E8 \' FF.\ 'DD \' F2\'E0 \' F1\'F2 \' F0\'E0 \' 编\ 'E8 \' F6\'E0 \' 编\ 'E5 \' E4\'EE \' EB \" E6\'编\' E0\'EE \' F2\'EE \' E1\'F0 \' E0\'E6 \' E0\'F2 \' FC\'F1 \' FF\'E2 \' F2\'E0 \' E1\'EB \' E8\'F6 \' E5\'E2 \' F1\'EE \' E4\'E5 \' F0\'E6 \' E0\'编\' E8 \'E8 …

unicode rtf ms-word codepages word-2003

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

使用自动换行创建可调整大小/多行的Tkinter / ttk标签

是否可以创建带有自动换行的多行标签,并与其父级的宽度同步调整大小?换句话说,当您更改记事本窗口的宽度时,记事本的自动换行行为。

用例是一个对话框,需要完整显示一个多行文本块(指令),而不会剪切文本或使用滚动条。父容器将具有足够的垂直空间以适应狭窄的宽度。

我一直在尝试使用Tkinter标签和消息小部件以及ttk标签小部件,但均未成功。似乎我需要对像素的wraplength值进行硬编码,而让这些控件在文本到达容器的右边缘时自动自动换行。当然,Tkinters几何管理器可以帮助我自动调整标签大小并相应地更新其包裹长度值吗?

我应该看一下Text小部件吗?如果是这样,是否可以隐藏“文本”小部件的边框,以便可以将其用作带有自动换行的多行标签?

这是一个人如何做我上面描述的原型。它的灵感来自Bryan Oakley的技巧,该技巧使用了Text小部件以及Stackoverflow上的以下文章: 在python的tkinter中,我如何制作一个Label,以便可以用鼠标选择文本?

from Tkinter import *
master = Tk()

text = """
If tkinter is 8.5 or above you'll want the selection background to appear like it does when the widget is activated. Comment this out for older versions of Tkinter.

This is even more text.

The final line of our auto-wrapping label that supports clipboard copy.
""".strip()

frameLabel = Frame( master, padx=20, pady=20 )
frameLabel.pack()
w = Text( frameLabel, wrap='word', font='Arial 12 italic' ) …
Run Code Online (Sandbox Code Playgroud)

python windows tkinter ttk

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

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

Python/Tkinter:列表框分隔符,禁用项目,键盘导航?

我正在研究Tkinter Listbox小部件,但无法找到以下功能的解决方案:

  1. 如何创建不可选择的水平分隔符项,例如.相当于Tkinter Menu小部件的.add_separator()的分隔符?(使用破折号和下划线等字符看起来很糟糕).

  2. 如何禁用特定项目?我尝试使用.itemconfig(index,state ='disabled')但没有成功.

  3. 如何启用键盘导航,例如.当用户的键盘输入自动向前滚动到以用户键入的文本开头的最近项目时?我必须绑定('<KeyPress>,...)并自己管理此行为吗?

  4. 使用Text小部件或ttk Treeview小部件可以更容易地实现上述某些功能吗?

谢谢你,马尔科姆

python user-interface listbox tkinter ttk

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

Python/Tkinter:在 Windows 下使用自定义鼠标光标?

Python 2.7/Windows:我的理解是我们可以使用cursor='@file.cur'语法加载自定义鼠标光标:

widget = tkinter.Label( ..., cursor='@help.cur' )
Run Code Online (Sandbox Code Playgroud)

这是我收到的回溯:

Traceback (most recent call last):
  File "<pyshell#82>", line 1, in <module>
    widget.config( cursor='@help.cur' )
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1202, in configure
    return self._configure('configure', cnf, kw)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1193, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
TclError: bad cursor spec "@help.cur"
Run Code Online (Sandbox Code Playgroud)

是否可以使用 Tkinter、Tkinter 扩展或通过 Win32 API 调用在 Windows 下加载自定义鼠标光标?

python user-interface icons tkinter

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

Python/Tkinter:鼠标拖动没有边框的窗口,例如.overridedirect(1)

关于如何创建允许用户鼠标拖动没有边框的窗口的事件绑定的任何建议,例如.用overridedirect(1)创建的窗口?

使用案例:我们想创建一个浮动的工具栏/调色板窗口(没有边框),我们的用户可以在他们的桌面上拖动它们.

这就是我的想法(伪代码):

__PRE__

Tkinter是否暴露了足够的功能以允许我实现手头的任务?或者是否有更容易/更高级别的方法来实现我想要做的事情?

python windows user-interface window tkinter

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

确认Python 2.6 ftplib不支持Unicode文件名?备择方案?

有人可以证实了Python 2.6 FTPLIB不会支持Unicode文件名?或者必须对Unicode文件名进行特殊编码才能与ftplib模块一起使用?

以下电子邮件交换似乎支持我的结论,即ftplib模块仅支持ASCII文件名.

ftplib应该使用UTF-8而不是latin-1编码吗? http://mail.python.org/pipermail/python-dev/2009-January/085408.html

有关支持Unicode文件名的第三方Python FTP模块的任何建议?我用谷歌搜索了这个问题没有成功[1],[2].

官方Python文档没有提到Unicode文件名[3].

谢谢你,马尔科姆

[1] ftputil包装ftplib并继承了ftplib明显的ASCII支持?

[2] Paramiko的SFTP库确实支持Unicode文件名,但我正在寻找相对于我们当前项目的ftp(与sftp)支持.

[3] http://docs.python.org/library/ftplib.html

解决方法:

encodings.idna.ToASCII和.ToUnicode方法可用于将Unicode路径名转换为ASCII格式.如果使用这些函数包装所有远程路径名和dir/nlst方法的输出,那么您可以创建一种使用标准ftplib保留Unicode路径名的方法(并且还保留不在文件系统上的Unicode文件名)支持Unicode路径).这种技术的缺点是,当引用您上传到服务器的文件时,服务器上的其他进程也必须使用encodings.idna.顺便说一句:我知道这是对encodings.idna库的滥用.

感谢Peter和Bob的评论,我发现这些评论非常有帮助.

python ftp unicode file

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

了解分发冻结的Python Tkinter应用程序所需的TCL文件

我想弄清楚Python中的哪些文件(Python 2.6/Python 2.7)tcl文件夹是必需的,以便使用Py2exe或类似程序分发冻结的Python Tkinter应用程序.

快速而肮脏的方式(使用pyexe作为示例)是按照下一页上的第二个示例,然后将您的python的tcl文件夹xcopy到您的dist文件夹(作为tcl子文件夹). http://www.py2exe.org/index.cgi/TixSetup

xcopy tcl技术的问题在于它复制了100个可能不需要分发的额外文件.

例如,我的实验表明在冻结Python 2.7 Tkinter应用程序时可能不需要以下tcl文件夹:

注意:数字大小是每个路径中所有文件的总和.

  • tcl\tcl8.5\encoding 1415K(删除不适用的编码?UTF-8/Unicode需要的任何编码?)
  • tcl\tcl8.5\tzdata 1450K(tcl时钟演示的时区数据?)
  • tcl\tcl8.5*.tcl 256K
  • tcl\tix8.4.3\demos 246K
  • tcl\tk8.5\demos 685K

我是在正确的道路上还是不包括上面的tcl内容会让我在路上撞到我?

更好的是,有没有关于Python的tcl文件夹中的文件的文档?

谢谢你,马尔科姆

python tkinter tcl py2exe freeze

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

支持自动换行的 Canvas create_text() 版本?

是否有create_text()支持自动换行的模式或技术?我一直在使用create_text()vs. aLabelText小部件,因为我将文本放在画布上的图像顶部。

此外,是否有一个 Tkinter API 可以截断不适合特定宽度的文本,例如后缀之类的省略号,例如。Where very, very, very long text被转换为类似Where very, very, ....

python user-interface word-wrap tkinter-canvas

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