繁体   English   中英

如何使用PyQt4 GUI编辑Yaml文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM