在应用程序执行一些CPU繁重处理时保持GUI响应是有效GUI编程的挑战之一.
这里有一个很好的讨论如何在wxPython中执行此操作.总而言之,有3种方式:
您发现哪种方法最有效?其他框架(如Qt,GTK或Windows API)的技术也很受欢迎.
我需要开发一个中小型桌面GUI应用程序,由于时间限制,最好使用Python作为首选语言.
我有哪些GUI库选项允许我独立地重新分发我的应用程序,假设用户没有可用的Python安装,显然没有我正在使用的GUI库?
另外,我如何为每个目标操作系统打包大小合理的二进制文件?(我的主要目标是Windows和Mac OS X)
另外: 我一直在关注WxPython,但是我发现了大量的恐怖故事,用cx_freeze包装它并获得30mb +二进制文件,并且没有关于如何实际进行包装以及如何信任它的真实建议.
有人能指点我一个py2exe 的好教程吗?我已经阅读了官方教程,但与使用python脚本构建可执行文件时可以使用的所有选项相比,它更加清晰.为了记录,我的python脚本使用Python 2.5.2,wxPython/wxWidgets 2.8和MySQLdb 1.2.2; 所以,如果你有py2exe的具体技巧,那些包将非常感激(是的,我见过Py2EXE和wxPython页面).
Windows有"系统托盘",可存放时钟和运行良好的服务,如MSN,Steam等.
我想开发一个wxPython托盘应用程序,但我想知道它将如何移植到其他平台.每个平台上的托盘等价物是多少,以及支持Windows,OSX和Linux需要多少手动工作(特别是哪些shell最友好).
我安装了python 2.5,fink放在/ sw/bin /中.我使用easy install命令
sudo /sw/bin/easy_install wxPython
Run Code Online (Sandbox Code Playgroud)
尝试安装wxpython并在尝试处理wxPython-src-2.8.9.1.tab.bz2时出现错误,表示没有安装脚本.Easy-install已经适用于其他几个安装,直到这个.现在为什么要破坏它的任何帮助?
编辑:在转储回shell提示符之前发生错误.
阅读http://wxPython.org/download.php
最佳匹配:wxPython src-2.8.9.1正在
下载http://downloads.sourceforge.net/wxpython/wxPython-src-2.8.9.1.tar.bz2
处理wxPython- src- 2.8.9.1.tar.bz2
错误:在/tmp/easy_install-tNg6FG/wxPython-src-2.8.9.1.tar.bz2中找不到设置脚本
我在我的python应用程序中使用了一个模块,该模块使用日志记录模块编写了大量消息.最初我在控制台应用程序中使用它,并且很容易使用控制台处理程序将日志记录输出显示在控制台上.现在我使用wxPython开发了我的应用程序的GUI版本,我想将所有日志输出显示到自定义控件 - 多行textCtrl.有没有办法我可以创建一个自定义日志记录处理程序,以便我可以重定向所有日志记录输出并显示日志消息,无论我想要什么/在这种情况下,wxPython应用程序.
我希望找到类似于Borland Delphi或VisualBasic for Python的工具.基本上,我希望能够轻松编写Windows应用程序,而无需对每个小部件进行编码.这样的软件存在吗?谢谢!
我在Macbook Air上运行小牛队.今天我通过他们的网站下载了wxPython,但是当我点击安装包时,我得到了:
wxPython3.0-osx-cocoa-py2.7.pkg” is damaged and can’t be opened. You should eject the disk image.
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法来解决这个问题,谢谢.
我安装了wxPython 3.0.1.1,但我无法import wx使用Python 3.4.1.我收到以下错误:
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'wx'
Run Code Online (Sandbox Code Playgroud)
不过,我可以import wx使用Python 2.7(我的默认安装OS X 10.9):
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] …Run Code Online (Sandbox Code Playgroud) 这是在wxPython的Phoenix分支中.
为了不阻止GUI,我试图运行一些线程.
我的两个线程工作正常,但另一个线程似乎永远不会达到其绑定结果函数.我可以告诉它正在运行,它似乎没有正确发布事件.
这是主计算线程的结果函数:
def on_status_result(self, event):
if not self.panel.progress_bar.GetRange():
self.panel.progress_bar.SetRange(event.data.parcel_count)
self.panel.progress_bar.SetValue(event.data.current_parcel)
self.panel.status_label.SetLabel(event.data.message)
Run Code Online (Sandbox Code Playgroud)
这是我绑定他们的方式:
from wx.lib.pubsub.core import Publisher
PUB = Publisher()
Run Code Online (Sandbox Code Playgroud)
这是我绑定方法的方式:
def post_event(message, data):
wx.CallAfter(lambda *a: Publisher().sendMessage(message, data=data))
Run Code Online (Sandbox Code Playgroud)
这是线程.第一个不起作用,但后两个做:
class PrepareThread(threading.Thread):
def __init__(self, notify_window):
threading.Thread.__init__(self)
self._notify_window = notify_window
self._want_abort = False
def run(self):
while not self._want_abort:
for status in prepare_collection(DATABASE, self._previous_id, self._current_id, self._year, self._col_type,
self._lock):
post_event('prepare.running', status)
post_event('prepare.complete', None)
return None
def abort(self):
self._want_abort = True
class SetupThread(threading.Thread):
def __init__(self, notify_window):
threading.Thread.__init__(self)
self._notify_window = notify_window
self._want_abort = False
def …Run Code Online (Sandbox Code Playgroud) python ×10
wxpython ×10
macos ×2
distribution ×1
easy-install ×1
freeze ×1
logging ×1
py2exe ×1
pyqt4 ×1
python-3.x ×1
qt ×1
system-tray ×1