[英]How to edit a yaml file with PyQt4 GUI
因此,我正在尝试创建一个简单的GUI,该GUI可以使用yaml文件并通过PyQT对其进行编辑。 假设yaml包含{example:“ Helloworld”}
我什至无法在GUI框中显示yaml。
所以我有用python编写的GUI文本框:
import yaml
import sys
from PyQt4 import QtGui, QtCore
class GUI(QtGui.QWidget):
def __init__(self):
super(GUI, self).__init__()
self.initUI()
def initUI(self):
msg = QtGui.Qlabel("This is a test message")
self.msg.move(60, 20)
self.addedLine = QtGui.QLabel(self)
textBox = QtGui.QLineEdit(self)
textBox.move(60, 100)
self.addedLine.move(60, 40)
textBox.textChanged[str].connect(self.onChanged)
self.setGeometry(500, 500, 500, 500)
self.setWindowTitle('QtGui.QLineEdit')
self.show()
def onChanged(self, text):
self.addedLine.setText(text)
self.addedLine.adjustSize()
def main():
app = QtGui.QApplication(sys.argv)
ex = GUI()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
这只是显示yaml数据的简单功能
def displayYaml():
yamlDoc = open("yaml.yml",'r')
data = yaml.load(yamlDoc)
yamlDoc.close()
prettyData = yaml.dump(data, default_flow_style=False)
return prettyData
那么我可以将此displayYaml函数添加到GUI类吗? 还是我必须将其制作为单独的文件并导入? 我尝试了不带该函数的displayYaml代码,并尝试将其直接写入initUI,但这不起作用,并且出现错误:
UnboundLocalError: local variable 'yaml' referenced before assignment
最后,我希望它显示1. yaml文档。 这将是一条固定的消息行。 2.有一个单独的消息行和文本更改框,我已经做了。3.用textchange框中的任何输入覆盖yaml doc。
import sys, yaml
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.verticalLayout = QtGui.QVBoxLayout()
self.plainTextEdit = QtGui.QPlainTextEdit()
self.verticalLayout.addWidget(self.plainTextEdit)
self.pushButton = QtGui.QPushButton("Load Yaml")
self.verticalLayout.addWidget(self.pushButton)
self.setLayout(self.verticalLayout)
self.pushButton.clicked.connect(self.loadYaml)
def loadYaml(self):
fileName = str(QtGui.QFileDialog.getOpenFileName(self, "Open File","/home/some/folder","Yaml(*.yaml);;AllFiles(*.*)"))
f = open(fileName)
getData = yaml.safe_load(f)
prettyData = yaml.dump(getData, default_flow_style=False)
self.plainTextEdit.appendPlainText(str(prettyData))
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
试试这个代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.