Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中迭代YAML_Python_Tkinter_Yaml - Fatal编程技术网

在Python中迭代YAML

在Python中迭代YAML,python,tkinter,yaml,Python,Tkinter,Yaml,我正在尝试构建一个具有Tkinter GUI的Python应用程序。 我被困在那里,不知道如何通过按键读取yaml字符串。我希望字段名称的值是代码中条目的名称,标签的值是标签文本的属性 cfg.yml如下所示: config.py如下所示: Main.py这里的问题是我不知道如何使用yaml列表,以及如何在def标签(self)和def条目(self) 安装pyyaml库: pip安装pyyaml 现在将yaml转换为python列表并进行处理: 导入yaml 从pathlib导入路径 doc

我正在尝试构建一个具有Tkinter GUI的Python应用程序。 我被困在那里,不知道如何通过按键读取yaml字符串。我希望
字段名称
的值是代码中
条目
的名称,
标签
的值是
标签文本
的属性

cfg.yml如下所示:

config.py如下所示:

Main.py这里的问题是我不知道如何使用yaml列表,以及如何在
def标签(self)
def条目(self)


安装pyyaml库:

pip安装pyyaml
现在将yaml转换为python列表并进行处理:

导入yaml
从pathlib导入路径
document_yaml=Path(“./cfg.yaml”).read_text()
yaml\u列表=yaml.load(文件\u yaml)
打印(yaml_列表)
#[{'field_name':'neptun_code','label':'neptun code'},{'field_name':'result',#'label':'result[%]},{'field_name':'mark','label':'mark[1-5]}]
#例如,标签将是:
def标签(自):
#标签
行=0
对于yaml_列表中的项目:
self.lbl=tk.Label(self.window,text=item[“Label”])
self.lbl.grid(列=0,行=行)
行+=1
完整示例:

导入yaml
从pathlib导入路径
类配置(对象):
定义初始化(自):
self.document\u yaml=Path(“./cfg.yaml”).read\u text()
def load_yaml(自)->列表:
返回yaml.load(自文件\u yaml)
类窗口(对象):
定义初始化(自):
self.name=None
self.window=None
self.lbl=无
self.txt=无
self.config=config().load_yaml()
def显示(自我):
self.create_window()
self.labels()
self.window.mainloop()
def创建_窗口(自):
self.window=tk.tk()
self.window.title(“主窗口”)
self.window.geometry('350x200')
def标签(自):
#标签
行=0
对于self.config中的项目:
self.lbl=tk.Label(self.window,text=item[“Label”])
self.lbl.grid(列=0,行=行)
行+=1

安装pyyaml库:

pip安装pyyaml
现在将yaml转换为python列表并进行处理:

导入yaml
从pathlib导入路径
document_yaml=Path(“./cfg.yaml”).read_text()
yaml\u列表=yaml.load(文件\u yaml)
打印(yaml_列表)
#[{'field_name':'neptun_code','label':'neptun code'},{'field_name':'result',#'label':'result[%]},{'field_name':'mark','label':'mark[1-5]}]
#例如,标签将是:
def标签(自):
#标签
行=0
对于yaml_列表中的项目:
self.lbl=tk.Label(self.window,text=item[“Label”])
self.lbl.grid(列=0,行=行)
行+=1
完整示例:

导入yaml
从pathlib导入路径
类配置(对象):
定义初始化(自):
self.document\u yaml=Path(“./cfg.yaml”).read\u text()
def load_yaml(自)->列表:
返回yaml.load(自文件\u yaml)
类窗口(对象):
定义初始化(自):
self.name=None
self.window=None
self.lbl=无
self.txt=无
self.config=config().load_yaml()
def显示(自我):
self.create_window()
self.labels()
self.window.mainloop()
def创建_窗口(自):
self.window=tk.tk()
self.window.title(“主窗口”)
self.window.geometry('350x200')
def标签(自):
#标签
行=0
对于self.config中的项目:
self.lbl=tk.Label(self.window,text=item[“Label”])
self.lbl.grid(列=0,行=行)
行+=1

您想要这样的东西:您想要这样的东西:谢谢!现在我可以通过按键来获取这些值。还有一个问题,我如何在类窗口()中初始化“类配置(对象)”以获取列表?我试过了,但当我试着使用print()时,输出是无的。我不熟悉TkInter以及如何实例化配置。但我在上面包含了一个完整的示例,其中我在Window类中强制配置。希望它能给你一些线索?谢谢!现在我可以通过按键来获取这些值。还有一个问题,我如何在类窗口()中初始化“类配置(对象)”以获取列表?我试过了,但当我试着使用print()时,输出是无的。我不熟悉TkInter以及如何实例化配置。但我在上面包含了一个完整的示例,其中我在Window类中强制配置。希望它能给你一些线索?
- field_name: neptun_code
  label: Neptun code
- field_name: result
  label: Result [%]
- field_name: mark
  label: Mark [1-5]
from pathlib import Path


class Config(object):

    def __init__(self):
        self.document_yaml = None

    def function(self):
        self.from_yaml()

    def from_yaml(self):
        self.document_yaml = Path("./cfg.yaml").read_text()
        return self.document_yaml
import tkinter as tk
from tkinter import messagebox


class Window(object):

    def __init__(self):
        self.name = None
        self.window = None
        self.lbl = None
        self.txt = None


    def show(self):
        self.create_window()
        self.labels()
        self.entries()
        self.window.mainloop()

    def create_window(self):
        self.window = tk.Tk()
        self.window.title("MainWindow")
        self.window.geometry('350x200')

    def labels(self):
        # label
        row = 0
        for key, value in yaml_str: #?????
            self.lbl = tk.Label(self.window, text=value)
            self.lbl.grid(column=0, row=row)
            row += 1

    def entries(self):
        # entry
        row = 0
        for key, value in yaml_str: # ??????
            self.txt = tk.Entry(self.window, textvariable=self.name, width=20)
            self.txt.grid(column=1, row=row)
            row += 1



my_window = Window()
my_window.show()