#!/usr/bin/env python # -*- encoding: utf-8 -*- import wx from myconfig import MyConfig from myconfig import YAML_FILE_NAME class UI_Com_Setting(wx.Dialog): """ @description : Com 配置 """ def __init__(self, parent,id): # 串口页面配置 super(UI_Com_Setting, self).__init__( parent ,id=id ) self.config = MyConfig() self.InitUI() self.SetSize((400, 400)) self.SetTitle(" 设置串口参数 ") def InitUI(self): self.config_yml = self.config.read_yaml() # print(self.config_yml['comsetting']) self.panel = wx.Panel(self) self.vbox = wx.BoxSizer(wx.VERTICAL) self.sb = wx.StaticBox(self.panel, label='设置串口') self.sbs = wx.StaticBoxSizer(self.sb, orient=wx.VERTICAL) self.hbox1 = wx.BoxSizer(wx.HORIZONTAL) self.staticText1 = wx.StaticText(self.panel, label='串口号: ',size=(60, -1), style=wx.ALIGN_CENTRE_VERTICAL ) self.textCtrl1 = wx.TextCtrl(self.panel, value="",size=(250,25) ) tmp = self.get_str_from_config("comsetting",'port') if tmp is not None: self.textCtrl1.SetValue(tmp) self.hbox1.Add(self.staticText1, flag=wx.TOP|wx.LEFT, border=5) self.hbox1.Add(self.textCtrl1, flag=wx.TOP|wx.LEFT, border=5) self.sbs.Add(self.hbox1, flag=wx.TOP|wx.LEFT, border= 5) self.hbox2 = wx.BoxSizer(wx.HORIZONTAL) self.staticText2 = wx.StaticText(self.panel, label='波特率: ' ,size=(60, -1)) # self.staticText2_1 = wx.StaticText(self.panel, label='分钟 ' ,size=(60, -1)) self.textCtrl2 = wx.TextCtrl(self.panel, value="",size=(250,25)) tmp = self.get_str_from_config("comsetting",'baudrate') if tmp is not None: self.textCtrl2.SetValue(tmp) self.hbox2.Add(self.staticText2, flag=wx.TOP|wx.LEFT, border=5) self.hbox2.Add(self.textCtrl2,flag=wx.TOP|wx.LEFT, border=5) # self.hbox2.Add(self.staticText2_1, flag=wx.TOP|wx.LEFT, border=5) self.sbs.Add(self.hbox2, flag=wx.TOP|wx.LEFT, border=5) self.hbox3 = wx.BoxSizer(wx.HORIZONTAL) self.staticText3 = wx.StaticText(self.panel, label='数据位: ' ,size=(60, -1)) # self.staticText3_1 = wx.StaticText(self.panel, label='分钟 ' ,size=(60, -1)) self.textCtrl3 = wx.TextCtrl(self.panel, value="",size=(250,25)) tmp = self.get_str_from_config("comsetting",'bytesize') if tmp is not None: self.textCtrl3.SetValue(tmp) self.hbox3.Add(self.staticText3, flag=wx.TOP|wx.LEFT, border=5) self.hbox3.Add(self.textCtrl3,flag=wx.TOP|wx.LEFT, border=5) # self.hbox3.Add(self.staticText3_1, flag=wx.TOP|wx.LEFT, border=5) self.sbs.Add(self.hbox3, flag=wx.TOP|wx.LEFT, border=5) self.hbox4 = wx.BoxSizer(wx.HORIZONTAL) self.staticText4 = wx.StaticText(self.panel, label='奇偶性: ' ,size=(60, -1)) # self.staticText3_1 = wx.StaticText(self.panel, label='分钟 ' ,size=(60, -1)) self.textCtrl4 = wx.TextCtrl(self.panel, value="",size=(250,25)) tmp = self.get_str_from_config("comsetting",'parity') if tmp is not None: self.textCtrl4.SetValue(tmp) self.hbox4.Add(self.staticText4, flag=wx.TOP|wx.LEFT, border=5) self.hbox4.Add(self.textCtrl4,flag=wx.TOP|wx.LEFT, border=5) self.sbs.Add( self.hbox4, flag=wx.TOP|wx.LEFT, border=5 ) self.hbox5 = wx.BoxSizer(wx.HORIZONTAL) self.staticText5 = wx.StaticText(self.panel, label='停止位: ' ,size=(60, -1)) # self.staticText3_1 = wx.StaticText(self.panel, label='分钟 ' ,size=(60, -1)) self.textCtrl5 = wx.TextCtrl(self.panel, value="",size=(250,25)) tmp = self.get_str_from_config("comsetting",'stopbit') if tmp is not None: self.textCtrl5.SetValue(tmp) self.hbox5.Add(self.staticText5, flag=wx.TOP|wx.LEFT, border=5) self.hbox5.Add(self.textCtrl5, flag=wx.TOP|wx.LEFT, border=5) self.sbs.Add( self.hbox5, flag=wx.TOP|wx.LEFT, border=5 ) self.panel.SetSizer(self.sbs) self.hbox_0 = wx.BoxSizer(wx.HORIZONTAL) self.okButton = wx.Button(self, label=u'保存配置') self.closeButton = wx.Button(self, label='Close') self.hbox_0.Add(self.okButton) self.hbox_0.Add(self.closeButton, flag = wx.LEFT, border=5) # 添加 vbox 到panel self.vbox.Add(self.panel, proportion=1, flag=wx.ALL | wx.EXPAND, border=5) self.vbox.Add(self.hbox_0, flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, border=10) self.SetSizer(self.vbox) self.okButton.Bind(wx.EVT_BUTTON, self.OnSave) self.closeButton.Bind(wx.EVT_BUTTON, self.OnClose) def get_str_from_config( self, section, key ): return str(self.config_yml[section][key]) pass def set_config_by_section_key_val( self, section, key, val ): # print(f" {key} current type {type( self.config_yml[section][key] )}") if type( self.config_yml[section][key] ) == int: self.config_yml[section][key] = int(val) elif type( self.config_yml[section][key] ) == float: self.config_yml[section][key] = float(val) else: self.config_yml[section][key] = val pass def saveData( self, e ): pass def OnClose( self, e ): self.Destroy() def OnSave(self, e): success = True # 赋值字典,写入文件 self.set_config_by_section_key_val("comsetting", 'port', self.textCtrl1.GetValue( )) self.set_config_by_section_key_val("comsetting", 'baudrate', self.textCtrl2.GetValue( )) self.set_config_by_section_key_val("comsetting", 'bytesize', self.textCtrl3.GetValue( )) self.set_config_by_section_key_val("comsetting", 'parity', self.textCtrl4.GetValue( )) self.set_config_by_section_key_val("comsetting", 'stopbit', self.textCtrl5.GetValue( )) self.config.write_yaml(self.config_yml) del self.config if success: self.EndModal(wx.ID_OK)