- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Pyqt 编程新手。我尝试构建一个简单的 GUI,如下图所示:
这是我写的代码:
from PyQt4 import QtCore, QtGui
import subprocess
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
Ui_Dialog.hypermesh =0
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(435, 181)
self.gridLayout_2 = QtGui.QGridLayout(Dialog)
self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
self.groupBox = QtGui.QGroupBox(Dialog)
self.groupBox.setObjectName(_fromUtf8("groupBox"))
self.gridLayout = QtGui.QGridLayout(self.groupBox)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.pushButton = QtGui.QPushButton(self.groupBox)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
self.comboBox = QtGui.QComboBox(self.groupBox)
self.comboBox.setObjectName(_fromUtf8("comboBox"))
self.gridLayout.addWidget(self.comboBox, 0, 1, 1, 1)
self.pushButton_3 = QtGui.QPushButton(self.groupBox)
self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
self.gridLayout.addWidget(self.pushButton_3, 1, 0, 1, 1)
self.pushButton_2 = QtGui.QPushButton(self.groupBox)
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.gridLayout.addWidget(self.pushButton_2, 1, 1, 1, 1)
self.gridLayout_2.addWidget(self.groupBox, 0, 0, 1, 1)
hypmv=[]
cont=subprocess.Popen('ls /usr/local/bin/hm*',stdout=subprocess.PIPE,stdin=subprocess.PIPE,shell=True)
contents = cont.stdout.readlines()
for i in range(len(contents)):
temp=contents[i].strip()
temp=temp.split('/')
size=len(temp)
hypmv.append(temp[size-1])
self.comboBox.addItem(_fromUtf8(""))
self.comboBox.setItemText(i, _translate("Dialog", hypmv[i], None))
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.pushButton_3, QtCore.SIGNAL(_fromUtf8("clicked()")), Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
QtCore.QObject.connect(self.pushButton,QtCore.SIGNAL(_fromUtf8("clicked()")),self.hypm)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.groupBox.setTitle(_translate("Dialog", "Software Selector", None))
self.pushButton.setText(_translate("Dialog", "Hypermesh(Pre processor)", None))
self.pushButton_3.setText(_translate("Dialog", "Quit", None))
self.pushButton_2.setText(_translate("Dialog", "Save", None))
def hypm(self):
Ui_Dialog.hypermesh = unicode(self.comboBox.currentText())
subprocess.Popen(Ui_Dialog.hypermesh,shell=True)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
在代码中,当 gui 初始化时,组合框项目将被初始化,当我点击按钮时,应该打开当前在组合框中选择的软件版本。这个功能做得很好。
但现在我想保存用户所做的选择,这样每次他调用 gui 时,他就不应该再次选择他之前在组合框中使用的版本。
因此,如果他第一次选择 hm_11.0,则每次都应该选择“hm_11.0”,直到他更改为止。我该怎么做??
最佳答案
这是您想要阅读的类(class):http://pyqt.sourceforge.net/Docs/PyQt4/qsettings.html
里面有一个小教程(ctrl+f 恢复 GUI 应用程序的状态)。
您将使用 setValue 来存储 keyToSetting/valueOfSetting 信息,并使用 keyToSetting 值读取信息。
示例: 导入系统 从 PyQt4 导入 QtGui、QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.readSettings()
self.setWindowTitle('Simple')
self.show()
def readSettings(self):
settings = QtCore.QSettings("AyaanTech", "SoftwareTest")
self.setGeometry(settings.value("geometry", QtCore.QRect(300, 300, 250, 150)).toRect());
def writeSettings(self):
settings = QtCore.QSettings("AyaanTech", "SoftwareTest")
settings.setValue("geometry", self.geometry());
def closeEvent(self, event):
quit_msg = "Do you want to save position and size?"
reply = QtGui.QMessageBox.question(self, 'Message',
quit_msg, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No, QtGui.QMessageBox.Cancel)
if reply == QtGui.QMessageBox.Yes:
self.writeSettings()
event.accept()
elif reply == QtGui.QMessageBox.No:
event.accept()
else:
event.ignore()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
关于python - 将qcombobox中所做的选择保存在pyqt中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112816/
我使用 Qt Designer 来构建我的 UI 布局。在布局上,我有一个名为 cb_fac_cd 的组合框.在我的代码中,我有一个函数可以根据我尝试构建的列表自动构建一个组合框。我在数据库中定义了很
我正在创建带有复选框的 QComboBox。如何防止鼠标单击时 View 折叠?我希望能够设置复选框,但是每次单击项目时 - QComboBox 的下拉菜单都会折叠起来。 注意:目前我正在调试 Qt
我为 QComboBox 创建了模型: #ifndef QCOMBOBOXMODEL_H #define QCOMBOBOXMODEL_H #include class QComboBoxModel
我如何实现 QComboBox允许您从树结构中进行选择,类似于 QTreeView ? 最佳答案 我在 developer.nokia.com( Part 1 , Part 2 )上使用两部分配方想出
当 QComboBox 的 currentIndex 更改时,我需要使用 currentIndex+1 调用函数。今天早上我在语法上苦苦挣扎: // call function readTables(
我正在 PyQt 中开发一个应用程序,该应用程序采用对象字典,并允许您实时绘制从机器人流式传输的变量。我正在努力启用此功能的一件事是下拉菜单。不幸的是,我们有几百个变量,所以我的 PyQt Combo
我想把 QComboBox变成 QStandardItem用于 QStandardItemModel .我一直在环顾四周,我找不到答案,有什么想法吗? 最佳答案 您不存储 QComboBox在 QSt
我的 ui 上有一个 QComboBox 并像这样设置模型: QStringListModel* model = new QStringListModel; QStringList stringlis
我正在尝试在 QT5 中设置组合框的样式。我使用 QT Creator 进行布局并在启动时加载应用程序范围的样式表。 我与组合框相关的CSS如下: QComboBox { color:whit
我在输入表单上有一个可编辑组合框,其背景在接收焦点时必须更改。以下代码适用于 QLineEdit,但对 QComboBox 没有影响。 QLineEdit, QComboBox { backgroun
我想知道 QComboBox 中有多少像素需要这个项目: 红色 - 复选框 绿色 - 复选框结尾和文本开头之间的距离 蓝色 - 边框末端和复选框开始之间的距离 在 QStyle 的文档中,我找到了两种
从“正常”QCombobox开始 我想要一个 QCombobox,它仅在展开时显示图标,但在折叠时不显示。 我找到了类似问题的几个答案,但它们都显示了更复杂情况的代码,而我还没有设法提取其核心。 我见
我工作的应用程序 GUI 需要一个组合框供用户选择项目。当应用程序启动时,组合框将显示类似于“请选择”的提示文本,而不是显示组合框的第一项。我在 http://doc.qt.io/qt-5/qcomb
我想设计我的 QComboBox与下拉项目的 margin 。这是现在的样子: 我想要这样的东西: 我试过 QComboBox QAbstractItemView::item { margin
这是我的代码片段: self.cursor.execute("MATCH (n:Person) RETURN n.firstname, n.lastname") for i in self.curso
通常我会通过说将项目添加到 QCombobox: QCombobox cbb; cbb.addItem("Hello"); 但是如果我尝试这个,我会得到一个错误: QComboBox cbb; QSt
我发现在最新的 Qt 版本中(目前我使用的是 5.4.1,但在 5.2 中是一样的)如果我将几个项目添加到 QComboBox 并将鼠标光标定位在特定位置,它会自行滚动,这确实是烦人……我想。 我在
当 QComboBox 的下拉列表打开时,键盘输入被用作(不是特别聪明的)搜索元素的方式。我想禁用它并将键盘事件的处理传播到父小部件。怎么办呢?我已经尝试在子类中重新实现 keyPressEvent
我有一个数据库,其中包含两种类型的同一事物。假设我有动物,然后两种类型是鸟类和鱼类。我想要一个将两者组合在一起的组合框。所以基本上你可以选择任何动物,一些鸟或一些鱼。 在组合框中,我想显示数据库中所有
我已将 QComboBox 子类化以根据特殊需要对其进行自定义。该子类用于在 QtDesigner 的 ui 文件中提升 QComboBoxes。一切正常,除了当我在插槽中放置断点时,程序不会在断点处
我是一名优秀的程序员,十分优秀!