小编ekh*_*oro的帖子

如何使用 ImageQt

我想使用 ImageQT,因此我可以使用 Python 图像库 (PIL) 进行图像处理并使用 Qt4 呈现结果。我有一个简短的测试例程,它读取 using PIL.Image.open,使用 ImageQT 转换它并使用 QT 打开一个对话框。如果我只是使用 Qt 来读取图像,它就可以工作。我错过了什么?

#!/usr/bin/python3.3
import sys
from PIL import Image
from PIL.ImageQt import ImageQt
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QImage

app = QtGui.QApplication(sys.argv)
# added initialization after first suggestion below
QtGui.QImageReader.supportedImageFormats()

im = Image.open('test.gif')
image = ImageQt(im)
pixmap = QtGui.QPixmap(image)
# pixmap = QtGui.QPixmap('test.gif')

widget = QtGui.QWidget()
hbox = QtGui.QHBoxLayout(widget)
lbl = QtGui.QLabel(widget)
lbl.setPixmap(pixmap)
hbox.addWidget(lbl)
widget.setLayout(hbox)
widget.show()        
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

测试.gif
(来源:www.sonic.net 上的 sjs

注意:在第一个建议之后添加了额外的 …

image pyqt4 python-imaging-library python-3.3

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

从QComboBox中的样式列表中使用QStyleFactory设置样式

我一直在使用PyQt4实现一个应用程序。

屏幕截图2

在此应用程序中,我想根据用户的选择来设置样式,并且我希望在不重新启动对话框的情况下设置样式。

这是我的代码,它会影响样式区域:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtGui

styles = ["Plastique","Cleanlooks","CDE","Motif","GTK+"]

class AppWidget(QWidget):
    def __init__(self,parent=None):
        super(AppWidget,self).__init__(parent)

        global styles # declaring global

        # I've skipped the useless codes

        horizontalLayout = QHBoxLayout()
        self.styleLabel =QLabel("Set Style:")
        self.styleComboBox = QComboBox()
        self.styleComboBox.addItems(styles) # adding the styles list
        horizontalLayout.addWidget(self.styleLabel)
        horizontalLayout.addWidget(self.styleComboBox)

        # skip more code

        self.setLayout(layout)

    def getStyle(self):
        return self.styleComboBox.currentIndex() # get the current index from combobox

        # another way i also implement is :
        # return self.styleComboBox.currentText() …
Run Code Online (Sandbox Code Playgroud)

python pyqt4 qcombobox qstyle

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

@pyqtSignature() 和 @pyqtSlot() pyqt 装饰器有什么区别

我试图编写一个连接到不同 pyqt 信号的插槽。我仍然无法理解的是两个装饰器 @pyqtSignature() 和 @pyqtSlot() 之间的区别。

连接到从 QAbstractButton 继承的 QPushButton 的 pyqt 单击信号的示例,on_widgetName_signalName在使用 @pyqtSignature("") 时,我使用了以下语法:

@pyqtSignature("")
def on_bn_gpx_select_file_clicked(self):  
    """
    Run when QPushButton is pressed, or do something
    """
    pass
Run Code Online (Sandbox Code Playgroud)

现在使用 @pyqtSlot() 时

@pyqtSlot()
def on_bn_gpx_select_file_clicked(self):  
    """
    Run when QPushButton is pressed, or do something
    """
    pass
Run Code Online (Sandbox Code Playgroud)

我的问题是,这两个装饰器有什么区别,什么时候应该使用 @pyqtSignature 或 @pyqtSlot()

谢谢

python qt pyqt signals-slots pyqt4

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

PyQt:在 QStyledItemDelegate 中使用 QTextEdit 作为编辑器

我正在寻找在 QStyledItemDelegate 中使用多行文本编辑的干净方法。createEditor 的实现非常简单,返回一个 QTextEdit 实例

def createEditor(self, parent, option, index):
    return QtGui.QTextEdit("Some text")
Run Code Online (Sandbox Code Playgroud)

setModelData期望派生出一个 Edit WidgetQWidget作为参数而不是QTextEditsbase QScrollArea。Qt 文档还告诉我(至少在 PyQt 文档中)该setModelData函数尝试从 QWidget UserData 字段获取数据。但是,如果没有派生的编辑小部件,QWidget则无法设置数据。目前它抛出一个,因为它在编辑器上AttributeError找不到。text()

是否有一些行之有效的方法来使用非 QWidget 编辑器?或者我只是缺少一些小部件来做到这一点?

目前,我通过实例化 aQLineEdit并将其QTextEdit传递toPlainText()给 来快速解决了该问题setModelData。非常哈克!!我还可以使用鸭子类型并在派生类上实现一个text()方法QTextEdit。但这仍然不是一个好方法,不是吗?在 C++ 中有什么方法可以做到这一点?

python pyqt qitemdelegate qtextedit qstyleditemdelegate

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

在 QTableWidget 中使用 setCellWidget 对列进行排序

我正在尝试对包含进度条的列进行排序。我希望列按进度条值排序。任何帮助都感激不尽 在此处输入图片说明

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys


class Example(QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        self.tablew = Table(self)
        self.setCentralWidget(self.tablew)

        self.setGeometry(300, 300, 300, 200)
        self.show()


class ProgressBar(QProgressBar):

    def __init__(self, value, parent=None):
        QProgressBar.__init__(self)
        self.setMinimum(1)
        self.setMaximum(5.0)
        self.setValue(value)
        self.setFormat('{0:.5f}'.format(value))
        style = ''' QProgressBar{max-height: 15px;text-align: center;}'''
        self.setStyleSheet(style)


class Table(QTableWidget):

    def __init__(self,   parent=None):
        QTableWidget.__init__(self)
        self.setColumnCount(2)
        self.setHorizontalHeaderLabels(['id', 'status'])
        header = self.horizontalHeader()
        header.setResizeMode(QHeaderView.Stretch)
        self.setSortingEnabled(True)
        self.loadData()
        #

    def loadData(self):
        #
        tableData = [[89, 4.8], [99, 3.9], [101, 2.6], [105, 4]]
        #
        self.setRowCount(len(tableData))
        #
        for …
Run Code Online (Sandbox Code Playgroud)

sorting pyqt pyqt4 qtablewidget python-2.7

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

在菜单中的图标和文本之间添加垂直分隔符

我有一个关于如何在菜单中的图标和文本之间添加分隔符的问题。如果您有任何想法,那将非常有帮助。这正是我需要做的:

预览.

从一个按钮,打开一个菜单并添加像图像中的分隔符。

python qt menu pyqt pyqt5

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

如何从主窗口打开子窗口

我的问题很难解释,但我尽力了。请在这方面帮助我。

我在 QtDesigner 中设计了一个 gui,并将 .ui 文件转换为 .py,例如 main_window.py。现在为了避免在 main_window.py 中进行更改,我为侦听器创建了另一个类。

class Main():    
    window = None
    app = None

    def __init__(self):
        self.launch()
        self.attach_listener()
        self.execute()

    ''' Launch GUI '''
    def launch(self):
        self.app = QtGui.QApplication(sys.argv)
        self.window = Ui_MainWindow()
        self.window.show()

    ''' Execute Window '''
    def execute(self):
        sys.exit(self.app.exec_())

    ''' Attach Listeners '''
    def attach_listener(self):
        self.window.add_button.clicked.connect(self.add_listener)
        self.window.delete_button.clicked.connect(self.delete_listener)
        self.window.update_button.clicked.connect(self.update_listener)
        self.window.connect(self.window.combo_box, QtCore.SIGNAL('activated(QString)'), self.logout_listener)
Run Code Online (Sandbox Code Playgroud)

我有另一个具有相同结构的 child_window.py,但由于 QApplication,我无法从这个窗口打开该窗口。我搜索了答案,但无法应用于我的代码。当类从 QtGui.QMainWindow 或 QtGui.QWidget 扩展时,这些答案是适用的,但我的情况不同。

python window pyqt childwindow

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

如何在布局中组合列(colspan 功能)

我有这个代码:

#!/usr/bin/env python3

from PyQt5.QtWidgets import *
import sys    

class Window(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        layout = QGridLayout()
        self.setLayout(layout)

        label_1 = QLabel("label 1")
        layout.addWidget(label_1, 0, 0)

        label_2 = QLabel("label 2")
        layout.addWidget(label_2, 0, 1)

        label_3 = QLabel("label 3")
        layout.addWidget(label_3, 1, 0)


app = QApplication(sys.argv)

screen = Window()
screen.show()

sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我有这个结果:

当前代码的图像示例

但我需要这个:

我需要的代码的图像示例

我该怎么做?

python layout qt pyqt pyqt5

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

使用Anaconda将.ui文件转换为.py文件

嗨,也许这是一个愚蠢的问题,但我找不到错误或我该怎么做才能做到这一点......

我有一个.ui文件,我的GUI是在QT Designer上设计的,我希望将它与Python一起使用.我已经安装了Anaconda 2(Python 2.7)和Python 3.6,但是当我在pyuic.py所在的文件夹中运行命令时(C:\ Python36\Lib\site-packages\PyQT5\uic)

python pyuic.py -o mainwindow.ui 
Run Code Online (Sandbox Code Playgroud)

我有以下错误

Traceback (most recent call last):
File "pyuic.py", line 28, in <module>
from .driver import Driver
ModuleNotFoundError: No module named '__main__.driver'; '__main__' is not a package
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么以及如何解决它?

提前致谢!

python pyqt qt-designer anaconda pyuic

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

PyQt5:如何从字典项列表生成 QTreeView?

我有一个这样的数据集:

[{'level': 0, 'dbID': 77, 'parent_ID': 6, 'short_name': '0:0:0:<new> to 6', 'long_name': '', 'order': 1, 'pos': 0} ,
{'level': 1, 'dbID': 88, 'parent_ID': 77, 'short_name': '1:1:1:Store13', 'long_name': '', 'order': 2, 'pos': 1} ,
{'level': 0, 'dbID': 442, 'parent_ID': 6, 'short_name': '2:<new>', 'long_name': '', 'order': 1, 'pos': 2} ,
{'level': 1, 'dbID': 522, 'parent_ID': 442, 'short_name': '3:<new>', 'long_name': '', 'order': 2, 'pos': 3} ,
{'level': 2, 'dbID': 171, 'parent_ID': 522, 'short_name': '3:<new>', 'long_name': '', 'order': 1, 'pos': 3} ,
{'level': 0, …
Run Code Online (Sandbox Code Playgroud)

python dictionary qtreeview qstandarditemmodel pyqt5

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