我开始学习一点python,现在想玩gui-building.由于其跨平台性,Qt似乎是一个不错的选择.
现在似乎有两种绑定:Riverbank Computing的PyQt和最初由诺基亚开发的PySide.
那么我应该选择哪一个?我所能找到的只是两年的特征比较,但现在有什么不同?
哪一个更容易使用,有更多/更好的文档?两者还在积极发展吗?
许可证对我来说并不是很重要,因为我不打算编写商业应用程序.
我使用VIRTUALENV与我的发展环境与利润web.py,simplejson以及其他面向Web的包.
我将使用Qt开发一个简单的python客户端来重用一些用web.py开发的Api.
这里有人用Virtualenv成功安装了PyQt4吗?
可能吗?
我已经下载了所有二进制文件并已PyQt4在我的python2.6目录中全局安装.
如果我不使用--no-site--packages选项,Virtualenv正确地包含PyQt4在我的新沙箱中,但显然,包含我不需要的所有全局包.
有没有一种干净的方法来准备一个新的沙盒--no-site--packages选项,然后添加PyQt4或PySide使用pip,easy_install或其他一些魔术?
我已经看到了一些使用@ QtCore.Slot装饰器的PySide插槽的示例代码,有些则没有.自己测试一下,它似乎没有什么区别.有没有理由我应该或不应该使用它?例如,在以下代码中:
import sys
from PySide import QtCore
# the next line seems to make no difference
@QtCore.Slot()
def a_slot(s):
print s
class SomeClass(QtCore.QObject):
happened = QtCore.Signal(str)
def __init__(self):
QtCore.QObject.__init__(self)
def do_signal(self):
self.happened.emit("Hi.")
sc = SomeClass()
sc.happened.connect(a_slot)
sc.do_signal()
Run Code Online (Sandbox Code Playgroud)
@ QtCore.Slot装饰器没什么区别; 我可以省略它,调用@ QtCore.Slot(str),甚至@ QtCore.Slot(int),它仍然很好地说,"嗨."
PyQt的pyqtSlot似乎也是如此.
我正在寻找一个简单的例子,说明如何将QtDesigner生成的.ui文件直接加载到Python应用程序中.
我只是想避免使用pyuic4.
我想用Qt编写一个C++应用程序,但是首先使用Python构建一个原型,然后逐渐用C++替换Python代码.
这是正确的方法,我应该使用哪些工具(绑定,绑定生成器,IDE)?
理想情况下,所有内容都应该在Ubuntu存储库中可用,因此我不必担心不兼容或旧版本,并且只需简单地设置所有内容即可aptitude install.
是否有关于此过程的全面文档,或者我是否必须学习每个组件,如果是,那么哪些组件?
现在我有多种选择:Qt Creator,因为很好的自动完成和Qt集成.
Eclipse,因为它支持C++和Python.埃里克(还没用过)Vim
PySide因为它正在使用CMake和Boost.Python,所以从理论上讲它会更容易替换python代码.PyQt因为它被更广泛地使用(更多支持)并且可以作为Debian包使用.
编辑:因为我必须将程序部署到各种计算机,C++ - 解决方案将需要1-5个文件(程序和一些库文件,如果我静态链接它),使用Python我必须构建PyQt/PySide/SIP /在每个平台上都有,并解释如何安装Python和其他所有东西.
我正在阅读关于PySide的教程,我在想,我是否需要为每件事找到自己的图标,或者是否有某种方法可以使用一些内置图标.这样,如果我想让我的小gui在另一个桌面环境中运行,我就不需要找到一整套新的图标.
Python新手来自Java(+ SWT/Windowbuilder),我很难解决如何在Python/Qt4(QtDesigner)/ PySide中正确编写大型桌面应用程序的问题.
我想在.ui文件之外的控制器类中保留任何视图逻辑(并且它是.py转换).首先,逻辑独立于GUI框架,其次是.ui和结果.py文件在任何更改时都会被覆盖!
我发现只有一些例子将动作代码添加到单片MainWindow.py(从ui生成)或MyForm.py(也是从.ui生成)中.我看不到任何方法将POPO控制器类链接到QtDesigner中的操作.
有人能指出我在可扩展的MVC/P方法中使用QtDesigner创建大规模应用程序的工作流程吗?
我有一个QScrollArea小部件,它从空开始;

它有一个垂直布局,一个QGridLayout和一个垂直间隔,以保持在顶部,并防止它在整个滚动区域上伸展;

在程序的其他地方,有一个QTextEdit,当它被改变时,其内容扫描"种类"元素,然后它们被添加到QGridLayout.已经除去的任何物种元素也被除去.这个位有效;

我一直打开垂直滚动条,所以当它出现时它不会位于那里的其他东西之上.请注意,尽管不需要,滚动条已经大于滚动框.
这就是问题.滚动区域似乎是预设的,我无法更改它.如果我向QGridLayout添加更多行,则滚动区域的大小不会增加.
相反,它保持相同的大小,并挤压QGridLayout,使它看起来很丑陋(起初);

然后添加更多它变得无法使用;

请注意,滚动条仍然与之前的图像大小相同.前两个图像来自Qt Designer,后续的3个来自程序运行.
如果我调整窗口大小以使QScrollArea增长,那么我看到:

指示滚动区域内的某些布局未正确调整大小.
我的问题是; 当我在QGridLayout中添加和删除时,我需要做什么才能使窗口小部件的可滚动区域动态调整大小?
Traceback (most recent call last):
File ".\matplotlibPySide.py", line 24, in <module>
win.setCentralWidget(canvas)
TypeError: 'PySide.QtGui.QMainWindow.setCentralWidget' called with wrong argument types:
PySide.QtGui.QMainWindow.setCentralWidget(FigureCanvasQTAgg)
Supported signatures:
PySide.QtGui.QMainWindow.setCentralWidget(PySide.QtGui.QWidget)
Run Code Online (Sandbox Code Playgroud)
我正在构建一个简单的科学数据记录器,最终将用于商业应用程序,所以我真的需要PySide的LGPL和绘图功能.有没有人有如何使这个工作或替代绘图包或想法的经验?
提前致谢.
我想创建一些选项卡,我读到了这个答案:如何在PySide中添加选项卡
我在答案中使用代码并进行了一些更改.因为我的代码必须读取一些文件并从这些文件中获取我的选项卡的名称,以便在我的代码中添加for循环.这是我的代码.
from PySide import QtCore, QtGui
import sys
import dflash_controller as con
if __name__ == "__main__":
list = [['a', 3], ['b', 4], ['c', 5], ['d', 6]]
app = QtGui.QApplication(sys.argv)
wid = QtGui.QWidget()
grid = QtGui.QGridLayout(wid)
wid.setLayout(grid)
# setting the inner widget and layout
grid_inner = QtGui.QGridLayout(wid)
wid_inner = QtGui.QWidget(wid)
wid_inner.setLayout(grid_inner)
# add the inner widget to the outer layout
grid.addWidget(wid_inner)
# add tab frame to widget
wid_inner.tab = QtGui.QTabWidget(wid_inner)
grid_inner.addWidget(wid_inner.tab)
# create tab
for i, index in enumerate(list[0:]): …Run Code Online (Sandbox Code Playgroud) pyside ×10
python ×9
pyqt ×5
qt ×3
c++ ×1
icons ×1
matplotlib ×1
pyqt4 ×1
qlayout ×1
qscrollarea ×1
qt-designer ×1
qwidget ×1
tabs ×1
virtualenv ×1