我想将图像转换为NumPy数组到PySide QPixmap,所以我可以显示它(编辑:在我的PySide UI中).我已经找到了这个工具:qimage2ndarray,但它只适用于PyQt4.我试图改变它以使它与PySide一起工作,但是我将不得不改变工具的C部分而我没有C的经验.我怎么能这样做或者有其他选择吗?
有人能指出我在PySide中的一个简单的QTableView示例吗?
我找到了QTableView文档,但不幸的是他们没有给出一个例子,我对PySide很新,所以我甚至不知道如何开始.(我对Java Swing中的JTable非常熟悉,所以我知道如何使用表模型.)
我有这个代码:
from PySide import QtCore, QtGui
import time
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 133)
self.progressBar = QtGui.QProgressBar(Dialog)
self.progressBar.setGeometry(QtCore.QRect(20, 10, 361, 23))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName("progressBar")
self.pushButton = QtGui.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(20, 40, 361, 61))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Dialog", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
self.progressBar.setValue(0)
self.pushButton.clicked.connect(self.progress)
def progress(self):
self.progressBar.minimum = 1
self.progressBar.maximum = 100
for i in range(1, 101):
self.progressBar.setValue(i)
time.sleep(0.1)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog) …Run Code Online (Sandbox Code Playgroud) 我最近开始使用Python进行Web开发,它有点酷; 我见过用QT/C++开发的程序,这在美学方面已经足够好了; 我刚刚注意到了新的PySide项目(它将LGPL Qt许可证带到Python并且它还不支持Windows).
鉴于上述情况,我看到将来使用Python + PyQt/PySide开发跨平台应用程序的可能性:)但我现在有几个疑问:
提前致谢!
我最近决定用Python和PySide编写我的第一个应用程序.但我有一个问题,希望你们能提供帮助.
Python不断提出删除"内部C++对象"的异常.根据我对Python的有限经验,我认为我的对象超出范围并被Python的垃圾收集器删除.
那么我将如何使用PySide在Python中设计多页面应用程序.并能够保留我的QWidgets,以便我可以再次显示该页面.
谢谢你的时间.
更新(代码)
instancing = None
def instance():
global instancing
if instancing == None:
instancing = WPZKernel()
return instancing
class WPZKernel:
win = None
mainscreen = None
def mainwindow(self):
if self.win == None:
self.win = GMKMainWindow(self)
return self.win
def main_panel(self):
if self.mainscreen == None:
self.mainscreen = GMKMainScreen(self.mainwindow())
return self.mainscreen
Run Code Online (Sandbox Code Playgroud)
然后,我会通过调用以下方式访问主面板:
import kernel
kernel.instance().main_panel()
Run Code Online (Sandbox Code Playgroud)
那么我是以错误的方式来做这件事的吗?
这段代码有效,但我想知道是否有更简单的方法:
def center(self):
qr = self.frameGeometry()
cp = gui.QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
Run Code Online (Sandbox Code Playgroud) 我一直在试图找到一种用PySide实现MVVM的方法但却无法实现.我认为应该有一种方法可以使用QItemEditorFactory从ViewModels创建视图,并且为了进行数据绑定,我想我可以使用QDataWidgetMapper.
您对Qt和PySide如何实现MVVM有什么想法吗?即使C++中有一些资源,我也会尝试将它们翻译成python.
谢谢.
w.setBackgroundRole(QPalette.Base)下面代码中的行无效.为什么?我该如何解决这个问题?
import sys
from PySide.QtCore import *
from PySide.QtGui import *
app = QApplication(sys.argv)
w = QWidget()
w.setBackgroundRole(QPalette.Base)
w.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud) 我目前正在考虑使用PySide进行移动应用程序开发.我已经完成了一些使用Pyside创建桌面应用程序并喜欢它的教程.我理解PySide/PyQt是Qt的端口或映射,并且通常落后于Qt,因为PySide/PyQt的开发人员必须跟上Qt中发生的任何事情.
我特别想为Android,BlackBerry和iOS开发.我也明白Qt最近增加了对Windows 8的支持,以及最新的BlackBerry 10 OS.
我的问题: PySide/PyQt在当前跨移动应用程序开发状态下的精通程度.
它是通过WebKit组件实现移动开发,允许使用日常HTML,CSS和JavaScript吗?
将PyQt用于移动应用程序开发或PySide会是更好的选择吗?
我使用PySide的Python-Qt绑定,我想绘制一个场景,其中包括一个矩形,矩形不完全可见,因为视图应该只显示矩形未完全包含的场景的一部分.
这是一个最小的例子:
from PySide.QtGui import *
app = QApplication([])
scene = QGraphicsScene()
scene.addRect(0, 0, 100, 100)
view = QGraphicsView(scene)
view.setSceneRect(-60, 20, 100, 100)
view.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
我希望看到矩形的下半部分,而不是看到三角形的下半部分!

似乎没有考虑矩形的右下角.
三角形仅出现在特殊情况下(如示例中的特殊场景矩形),如果完整矩形可见则不会出现.
这是一个错误还是我做错了什么?可以修复吗?
我的系统:Windows 7上的Python 3.3 + PySide 1.2.2(64位)