我正在尝试收集一些我的默认设置,有一件事我意识到我没有标准的.gitignore文件.有一个很好的线程显示了Visual Studio项目的良好.gitignore,但我没有看到很多关于Python和相关工具的建议(PyGTK,Django).
到目前为止,我有......
*.pyc
*.pyo
Run Code Online (Sandbox Code Playgroud)
...对于编译对象和......
build/
dist/
Run Code Online (Sandbox Code Playgroud)
...用于setuptools输出.
还有什么建议吗?
这是我的第一个GUI设计,我没有使用GUI构建器,目前堆叠,因为我已经理解,wx.ListCtrl的ObjectListView包装器本身不包含容易进度条或规格元素.(参见图片中的"上传状态"栏).
注意: ObjectListView在.Net版本中有进度条,目前不在wx.Python中.
PS: 我发现了这个精彩的Python GTK +全栈教程
我现在愚蠢地试图为Python桌面应用程序维护两个并行代码库,一个使用PyGObject内省GTK 3,一个使用PyGTK for GTK 2.我主要在PyGObject分支上工作,然后我将端口转换到PyGTK分支.由于这些实现之间的所有细微差别,我经常忽略事情并导致我想念和意外释放的破损,只是被用户抓住.
我试图找出一种设计一些单元测试的好方法,这些单元测试最好适合在两个代码库上运行.这不是一个过于复杂的程序,(它本质上是一个图书馆管理工具,想像iTunes):
- Main Window
|- Toolbar with some buttons (add/edit/remove items, configure the program)
|
|- VPaned
|--- Top HPaned
|------ ListView (listing values by which a library of items can be filtered)
|------ ListView (listing the contents of the library
|--- Bottom HPaned
|------ Image (displaying cover art for the currently selected item in the library)
|------ TextView (displaying formatted text describing the currently selected item)
- Edit dialog
- Configuration dialog
- About …
Run Code Online (Sandbox Code Playgroud) 我有一个用Glade(3.18)构建的GUI,它由Python 3程序调用(使用PyGObject).运行程序(Fedora 21)时,我收到很多警告:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Run Code Online (Sandbox Code Playgroud)
我该如何修复此警告?我尝试Transient for: main_window
在Glade中填写所有对话窗口的字段,但警告仍然出现.
所以我试图在我的virtualenv(在控制台中)运行一个简单的matplotlib示例.这是代码:
import matplotlib
matplotlib.use('GTKAgg')
import matplotlib.pyplot as plt
radius = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
area = [3.14159, 12.56636, 28.27431, 50.26544, 78.53975, 113.09724]
plt.plot(radius, area)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,当我运行这个时,我得到:
ImportError:Gtk*后端需要安装pygtk.
现在,乐趣开始了.我试图pip安装pygtk但它抛出:
********************************************************************
* Building PyGTK using distutils is only supported on windows. *
* To build PyGTK in a supported way, read the INSTALL file. *
********************************************************************
Complete output from command python setup.py egg_info:
********************************************************************
Run Code Online (Sandbox Code Playgroud)
我检查了INSTALL
文件并说要试试./configfure; make; make install
.然而.我不太确定如何在virtualenv中做到这一点.我在哪里解压缩pygtk的源代码以便安装在virtualenv中.
我正在寻找gi.repository
模块文档,我在互联网上找不到任何东西.我发现的只是C的新Gtk3库的文档,或旧的PyGtk 2.0参考手册
我正在寻找像PyGtk 2.0参考手册,但对于Gtk3.
Python有类似的东西吗?(我不是在寻找dir(Gtk)
或help(Gtk)
在Python控制台中.)
对于当前的mac os x,PyGTK是否存在二进制文件?我使用多个桌面环境(mac,windows,gnome),并且真的认为python缺乏跨平台GUI是一个问题.有谁知道我在哪里可以找到适用于Mac的PyGTK和GTK的内置版本?我无法克隆git存储库,它会保持超时.
我已经学习了一段时间的python并取得了一些成功.我甚至设法使用PyGtk + Glade创建了一个或两个(简单)程序.
问题是:我不确定使用GTK和python的最佳方法是使用Glade构建接口.
我想知道我们中更有经验的人(记住,我只是一个初学者)可以指出使用Glade的好处和注意事项,而不是在代码本身中创建所有内容(假设学习正确的gtk绑定不会完全是个问题).
我正在第一次将程序从PyGTK转换为PyGObject内省,我遇到了一个带有线程的障碍.我有一个需要一些时间才能完成的过程,所以我弹出一个带有进度条的对话框,我使用一个线程来完成这个过程并更新进度条.这对PyGTK工作得很好,但在转换为PyGObject之后,我得到了所有常见的不正确的线程怪异:程序挂起,但它似乎挂在过程的不同部分,等等.所以我得到的印象是事情发生了变化,但我可以弄清楚是什么.
这是一个简单的PyGTK进度条示例:http://aruiz.typepad.com/siliconisland/2006/04/threads_on_pygt.html 如该页面上所示,代码可以正常工作.我把它转换为PyGObject内省,我遇到了与我的程序相同的问题:它挂起,它没有正确更新进度条等.
import threading
import random, time
from gi.repository import Gtk, Gdk
#Initializing the gtk's thread engine
Gdk.threads_init()
class FractionSetter(threading.Thread):
"""This class sets the fraction of the progressbar"""
#Thread event, stops the thread if it is set.
stopthread = threading.Event()
def run(self):
"""Run method, this is the code that runs while thread is alive."""
#Importing the progressbar widget from the global scope
global progressbar
#While the stopthread event isn't setted, the thread keeps going on
while …
Run Code Online (Sandbox Code Playgroud) 是否有一个既定的方法嵌入的gettext locale/xy/LC_MESSAGES/*
在PYZ捆绑?特别是让Gtks自动小部件翻译从 ZIP存档中获取它们.
对于其他嵌入式资源pkgutil.get_deta
或inspect
/ get_source
工作得足够好.但系统和 Python gettext API依赖于bindtextdomain
提供一个简单的旧localedir
; 没有资源或字符串等
所以我无法设计一个可行的甚至是远程实用的解决方法:
虚拟gvfs
/ gio
路径
现在使用archive://file%3A%2F%2Fmypkg.pyz%2Fmessages%2F
IRI可以直接从zip读取其他文件.但是glibs g_dgettext仍然只是系统库的一个薄包装器.因此,任何此类URL都不能用作localedir
.
部分提取拉链
这就是我认为PyInstaller的工作方式.但是将.pyz应用程序捆绑在一起当然有点荒谬,只是在每次调用时都预先提取.
Userland gettext .mo
/ .po
extraction
现在手动读取消息目录或者只是使用普通的dicts来代替它.但仅适用于应用程序中的字符串.再也没办法让Gtk/GtkBuilder暗中接他们了.
因此,我不得不手动遍历整个小部件树,标签,文本,内部小部件,markup_text等.可能,但是meh.
FUSE安装
这将是超薄的.但是当然,拉链内容可以被访问gvfs-mount
等等.就好像是某种记忆力.而且我怀疑它会保持可靠性,例如两个应用程序实例正在运行,或者之前的不正确终止.(就像dunno一样,由于系统库,比如gettext,在一个脆弱的拉链保险丝点上磕磕绊绊......)
用于翻译的Gtk信号/事件(?)
我发现蹲下了,所以我有点确定在Gtk/PyGtk/GI中没有替代机制来进行小部件翻译.Gtk/Builder期望并与 gettext相关联.
是否有更可靠的方法?