小编ekh*_*oro的帖子

如何在pyside/pyqt/qt中获取QWidget的所有子组件?

我正在使用pyside(qt)开发一个桌面应用程序,我想访问(迭代)QWidget的所有行编辑组件.在qt中我发现了两个方法findChildfindChildren,但没有找到正确的例子,我的代码显示错误,'form'对象没有属性'findChild'. 这里的'形式'是Qwidget表单,包括组件lineEdit,comboboxes,Qpushbuttons等.

码:

lineEdits = form.findChild<QLineEdit>() //This is not working

lineEdits = form.findChild('QLineEdit) //This also not working
Run Code Online (Sandbox Code Playgroud)

python qt children pyside

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

pyqt:如何将样式表应用于自定义窗口小部件

# -*- coding: utf-8 -*-

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

class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setFixedWidth(200)
        self.setFixedHeight(200)

        stylesheet = \
            ".QWidget {\n" \
            + "border: 20px solid black;\n" \
            + "border-radius: 4px;\n" \
            + "background-color: rgb(255, 255, 255);\n" \
            + "}"
        self.setStyleSheet(stylesheet)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

我想用样式表添加边框到自定义小部件,但样式表似乎不起作用,有什么不对吗?

python pyqt pyqt4 qtstylesheets pyqt5

10
推荐指数
2
解决办法
4万
查看次数

通过pyqtdeploy和Qt5将PyQt5应用程序部署到Android

可能吗?我的意思是,是的,pyqtdeploy介绍页面说:"pyqtdeploy是一个部署PyQt应用程序的工具.它支持部署到桌面平台(Linux,Windows和OS/X)和移动平台(iOS,Android和Windows RT)."

我已经安装了Qt 5.3.0 for Android及其所有先决条件(SDK,NDK等).此外,我在QtCreator中使用简单的按钮和标签制作了测试项目,用于测试部署.一切都好.下一步是尝试pyqtdeploy来制作Qt项目,非常简单.但是当我试图构建这个项目时,链接器说没有QtCore,QtWidget库.我可以认识到,我没有静态链接的PyQt库,必须为arm架构编译它们.这样对吗?但后来我意识到,python库本身也必须是arm编译的.我可以在Qt中从源代码构建这个库吗?

搜索什么也没做.如果这是真的,为什么没有人(河岸,python)没有手臂编译库?也许我很想念一些东西.在这种情况下,我有更多的全球性问题.

如何使用pyqtdeploy和Qt 5.3.0 for Android将PyQt5.3 Python 3.4应用程序部署到Android?

android qt5 python-3.4 pyqt5 pyqtdeploy

10
推荐指数
1
解决办法
4413
查看次数

为什么我需要用pyqtSlot来装饰连接的插槽?

我正在使用pyqt5,并且我使用类似于以下的代码连接了几个方法:

self.progress.canceled.connect(self.cancel)
Run Code Online (Sandbox Code Playgroud)

例如,在哪里self.cancel:

def cancel(self):
    self.timer.stop()
Run Code Online (Sandbox Code Playgroud)

此代码似乎在多个方案中干净利落地工作,而没有装饰cancelpyqtSlot或做什么特别的吧.

我的问题是:

  1. 通过这种方式我失去了什么?
  2. 需要什么原因pyqtSlot

python pyqt signals-slots pyqt5

10
推荐指数
2
解决办法
1883
查看次数

qApp与QApplication.instance()

使用PyQt5,这两个都返回应用程序对象:

app = QtWidgets.QApplication.instance()
app = QtWidgets.qApp
for i in app.arguments()[1:]:
    ...
Run Code Online (Sandbox Code Playgroud)

但为什么print(QtWidgets.QApplication.instance() is QtWidgets.qApp)打印False

python pyqt instance pyqt5 qapplication

10
推荐指数
1
解决办法
4662
查看次数

调整列宽以适应QTableWidget pyqt

我已经google了一下,但我无法找到问题的解决方案.

我有一个包含2列的QTableWidget,我想要做的是让它们对整个小部件可见,而不显示水平滚动条.

有了图片,它应该是清楚的:

在此输入图像描述

我使用Qt Designer创建UI和一些代码来填充所有小部件和其他东西.

所以,首先我将th2 2列重新调整为内容:

self.statTable.resizeColumnToContents(0)
self.statTable.resizeColumnToContents(1)
Run Code Online (Sandbox Code Playgroud)

它工作,但然后Widget没有调整到2列宽度.

python qt pyqt qtablewidget autoresize

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

使用PyQt4调整对话框的大小

我有这个代码示例:

import sys
from PyQt4.QtGui import (QApplication, QHBoxLayout, QVBoxLayout, QDialog,
                                          QFrame, QPushButton, QComboBox)

class Form(QDialog):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        moreButton = QPushButton('moreButton')
        moreButton.setCheckable(True)
        resizeButton = QPushButton('Resize')
        combo = QComboBox()
        combo.addItems(['item1', 'item2'])

        layout1 = QHBoxLayout()
        layout1.addWidget(moreButton)
        layout1.addWidget(resizeButton)

        layout2 = QHBoxLayout()
        layout2.addWidget(combo)
        self.frame = QFrame()
        self.frame.setLayout(layout2)
        self.frame.hide()

        layout3 = QVBoxLayout()
        layout3.addLayout(layout1)
        layout3.addWidget(self.frame)

        moreButton.toggled.connect(self.frame.setVisible)
        moreButton.clicked.connect(self.method)
        resizeButton.clicked.connect(self.method)

        self.setLayout(layout3)
        self.resize(630, 50)

    def method(self):
        if self.frame.isVisible():           
            self.resize(630, 150)
        else:
            self.resize(630, 250)

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)

我运行它,当moreButton点击时,ComboBox出现或消失.Dialog的大小也会发生变化.但是,如果我将方法更改为:

def method(self):
    if self.frame.isVisible():           
        self.resize(630, …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt pyqt4

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

将python函数直接应用于Qt设计器作为信号

我是Qt和GUI编程的新手,但我已经在python中编写了相当多的代码 - 编写模块等等.我需要为我的一些旧模块开发简单的GUI.

我想做的事情可以通过以下简单的例子来表示:

def f(x, y):
    z = x + y
    return z
Run Code Online (Sandbox Code Playgroud)

对于此功能,我将为x和y提供两个行编辑,为z提供一个.现在我创建一个按钮'计算',当我这样做时,我希望它从行编辑中获取x和y运行函数f(x,y)并将输出提供给z.

有没有办法直接在Qt Designer中添加f(x,y)用python编写的函数?

如果不是什么选择?

python pyqt signals-slots pyqt4 qt-designer

9
推荐指数
1
解决办法
5652
查看次数

计算Python中的抵押贷款利息

我目前正在通过youtube上的视频教程学习python,并且遇到了一个我似乎无法掌握的公式,因为对我来说没什么好看的.除外的基本概念是制作抵押计算器,要求用户输入3条信息,贷款金额,利率和贷款期限(年)

然后它计算每月给用户的付款.这是我的代码:

__author__ = 'Rick'
# This program calculates monthly repayments on an interest rate loan/mortgage.

loanAmount = input("How much do you want to borrow? \n")
interestRate = input("What is the interest rate on your loan? \n")
repaymentLength = input("How many years to repay your loan? \n")

#converting the string input variables to float
loanAmount = float(loanAmount)
interestRate = float(interestRate)
repaymentLength = float(repaymentLength)

#working out the interest rate to a decimal number
interestCalculation = interestRate / 100

print(interestRate)
print(interestCalculation)

#working …
Run Code Online (Sandbox Code Playgroud)

python calculator formula python-3.x

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

PyQt:QFileSystemModel 复选框过滤器

我正在尝试使用 python/pyqt 创建一个实用程序,以从 a 创建 *.tar 存档QFileSystemModel(仅包括那些被检查的项目)。现在我想要控制QFileSystemModel复选框以使用文件名/文件类型/文件大小进行过滤。

如何QFileSystemModel使用通配符搜索文件名/文件类型/文件大小来选中/取消选中类外的复选框?

class CheckableDirModel(QtGui.QFileSystemModel):
    def __init__(self, parent=None):
        QtGui.QFileSystemModel.__init__(self, None)
        self.checks = {}

    def data(self, index, role=QtCore.Qt.DisplayRole):
        if role != QtCore.Qt.CheckStateRole:
            return QtGui.QFileSystemModel.data(self, index, role)
        else:
            if index.column() == 0:
                return self.checkState(index)

    def flags(self, index):
        return QtGui.QFileSystemModel.flags(self, index) | QtCore.Qt.ItemIsUserCheckable

    def checkState(self, index):
        if index in self.checks:
            return self.checks[index]
        else:
            return QtCore.Qt.Checked

    def setData(self, index, value, role):
        if (role == QtCore.Qt.CheckStateRole and index.column() == 0):
            self.checks[index] = value
            self.emit(QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"), …
Run Code Online (Sandbox Code Playgroud)

python filtering pyqt qfilesystemmodel

9
推荐指数
0
解决办法
1471
查看次数