gpt4 book ai didi

python - 如何在 PyQt 中编辑/添加表单中的数据? (Python)

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:49 26 4
gpt4 key购买 nike

使用下面的代码,我创建了一个表单来保存不同的问题,用于选择和添加到测试中。我想知道如何将数据(问题)添加到表单(顶部框)(假设我想添加一个名为“问题”的问题)我将如何去做这个???另外,虽然我知道如何将数据(我的意思是文本)添加到底部框中,但是否有某种方法可以让我在顶部框中选择一段文本并查看文本/变量的扩展底部框无需点击任何按钮???

代码如下:

import sys, random, time, math, re
from PyQt4 import QtGui, QtCore

class AddTst(QtGui.QWidget):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(464, 409)
self.verticalLayout_2 = QtGui.QVBoxLayout(Form)
self.horizontalLayout = QtGui.QHBoxLayout()
self.listView = QtGui.QListView(Form)
self.horizontalLayout.addWidget(self.listView)
self.verticalLayout = QtGui.QVBoxLayout()
self.EditButton = QtGui.QPushButton(Form)
self.verticalLayout.addWidget(self.EditButton)
self.DeleteButton = QtGui.QPushButton(Form)
self.verticalLayout.addWidget(self.DeleteButton)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem)
self.AddButton = QtGui.QPushButton(Form)
self.verticalLayout.addWidget(self.AddButton)
self.horizontalLayout.addLayout(self.verticalLayout)
self.verticalLayout_2.addLayout(self.horizontalLayout)
self.textBrowser = QtGui.QTextBrowser(Form)
self.verticalLayout_2.addWidget(self.textBrowser)
self.textBrowser.setPlainText('Hello')

self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):
self.EditButton.setText(QtGui.QApplication.translate("Form", "Edit", None, QtGui.QApplication.UnicodeUTF8))
self.DeleteButton.setText(QtGui.QApplication.translate("Form", "Delete", None, QtGui.QApplication.UnicodeUTF8))
self.AddButton.setText(QtGui.QApplication.translate("Form", "Add", None, QtGui.QApplication.UnicodeUTF8))

class AddTest(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = AddTst()
self.ui.setupUi(self)
def execute_event(self):
pass
def execute_all_event(self):
pass
def reload_event(self):
pass

def main():
app = QtGui.QApplication(sys.argv)
ex = AddTest()
ex.show()
sys.exit(app.exec_())


if __name__ == '__main__':
main()

最佳答案

要回答有关如何将列表项与文本框链接的具体问题:您应该连接到适当的信号,以便当当前列表项更改时,文本框会被填充。

但是在处理这个问题之前,还有更重要的事情需要处理。看来您已经使用 Qt Designer 创建了表单,然后使用 pyuic 生成了 gui 模块。然而,您却犯了直接编辑该模块的错误。这是一个坏主意,因为当您对表单进行更改时,当您必须重新生成 gui 模块时,您将丢失所有内容。

正确的方法是将 gui 模块导入到主应用程序中,如下所示:

from PyQt4 import QtCore, QtGui
from mainwindow_ui import Ui_MainWindow

class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.listWidget.currentRowChanged.connect(self.handleRowChanged)

def handleRowChanged(self, row):
item = self.ui.listWidget.item(row)
# do stuff with list-item...

if __name__ == '__main__':

import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

这假设您已生成一个名为 mainwindow_ui.py 的 gui 文件,并且您的主应用程序脚本保存在同一目录中。另请注意,我使用了 QListWidget而不是 QListViewQMainWindow而不是 QWidget。我建议您进行类似的更改,因为它将简化您的应用程序的开发。

其他一些需要考虑的事情:

  • 您当前正在使用文本浏览器显示内容,但此小部件是只读的。一个QTextEdit可能是更好的选择。
  • 目前无法添加/编辑每个项目的名称/标题。您可以添加 QLineEdit位于文本框上方。
  • 源数据的格式是什么?如何加载/保存它?如果您还没有解决这部分问题,您应该尽快解决,因为它可能会对您应用程序的整体设计产生很大影响。

关于python - 如何在 PyQt 中编辑/添加表单中的数据? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com