我正在使用pyside(qt)开发一个桌面应用程序,我想访问(迭代)QWidget的所有行编辑组件.在qt中我发现了两个方法findChild和findChildren,但没有找到正确的例子,我的代码显示错误,'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) # -*- 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)
我想用样式表添加边框到自定义小部件,但样式表似乎不起作用,有什么不对吗?
可能吗?我的意思是,是的,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?
我正在使用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)
此代码似乎在多个方案中干净利落地工作,而没有装饰cancel
用pyqtSlot
或做什么特别的吧.
我的问题是:
pyqtSlot
?使用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
?
我已经google了一下,但我无法找到问题的解决方案.
我有一个包含2列的QTableWidget,我想要做的是让它们对整个小部件可见,而不显示水平滚动条.
有了图片,它应该是清楚的:
我使用Qt Designer创建UI和一些代码来填充所有小部件和其他东西.
所以,首先我将th2 2列重新调整为内容:
self.statTable.resizeColumnToContents(0)
self.statTable.resizeColumnToContents(1)
Run Code Online (Sandbox Code Playgroud)
它工作,但然后Widget没有调整到2列宽度.
我有这个代码示例:
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) 我是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编写的函数?
如果不是什么选择?
我目前正在通过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/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 ×9
pyqt ×7
pyqt5 ×4
pyqt4 ×3
qt ×3
android ×1
autoresize ×1
calculator ×1
children ×1
filtering ×1
formula ×1
instance ×1
pyqtdeploy ×1
pyside ×1
python-3.4 ×1
python-3.x ×1
qapplication ×1
qt-designer ×1
qt5 ×1
qtablewidget ×1