一个软件的 UI 界面是非常重要的,这是软件与用户交互的接口,软件功能即使再强大,但如果没有清晰的 UI 界面,那也发挥不出软件的功能,使得用户体会不到软件的优势。今天痞子衡给大家介绍 pzh-py-com 的界面构建过程。
一、界面设计简图
在真正进入代码设计 pzh-py-com 界面前,首先应该在纸上画一个界面草图,确定 pzh-py-com 界面应该有哪些元素构成,这些元素分别位于界面上什么位置。下面是痞子衡画的 pzh-py-com 的界面简图,界面主要包括三大部分:接收区、配置区、发送区,接收区用于显示从串口接收到的数据;配置区用于配置串口参数;发送区用于编辑要从串口发送出去的数据。
二、界面设计 wxPython 组件图
有了 pzh-py-com 的界面设计简图指导,下一步需要将设计简图解析成如下的 wxPython组件图,将简图里的元素转换成 wxPython 里的真实组件。这一步需要配合查阅 wxPython 相关手册,了解 wxPython 有哪些组件。
有一个地方需要特别提醒的是,wxWrapSizer 里的控件是从左到右自上而下排列的,有的时候为了排版,会故意插入一些无效的 wxStaticText 来占位,下图中便用了 4 个占位的 wxStaticText(浅色框表示)。
三、在 wxFormBuilder 里创作
有了 pzh-py-com 的界面设计 wxPython 组件图,下面便可以在 wxFormBuilder 里照样子创作出 pzh-py-com 的真正界面了。关于 wxFormBuilder 的使用可参考痞子衡另一篇文章 极易上手的可视化 wxPython GUI 构建工具(wxFormBuilder)。
四、使用生成的 Python 代码
将 wxFormBuilder 生成的 python 代码保存为 win.py 文件(其中 Frame class 名为 com_win),并存放于 \pzh-py-com\src 目录下,此时需要另外新建一个名为 main 的主函数文件,并放在 \pzh-py-com\src 目录下。其中 main 文件内容如下:
import wx
import sys, os
import win
class mainWin(win.com_win):
def clearRecvDisplay( self, event ):
event.Skip()
def openClosePort( self, event ):
event.Skip()
def clearSendDisplay( self, event ):
event.Skip()
def sendData( self, event ):
self.m_textCtrl_recv.Clear()
self.m_textCtrl_recv.SetValue('hello world')
if __name__ == '__main__':
app = wx.App()
main_win = mainWin(None)
main_win.SetTitle(u"JaysPyCOM v0.1.0")
main_win.Show()
app.MainLoop()
main.py 里并没有实现具体功能,只有一个 hello world 打印的效果,此处只是演示界面已经创建成功,界面运行效果如下:
至此,串口调试工具 pzh-py-com 诞生之界面构建痞子衡便介绍完毕了,掌声在哪里~~~