Readme of english version refers to Readme_EN.txt
0.简介
这是一个VB6的ADDIN(外接程序),用于使用VB6开发工具直接拖放控件,
直接可视化完成Python的TKinter的GUI布局和设计,可以在VB界面上设置
控件的一些属性,最终自动生成必要的代码(包括回调函数框架),代码
生成后仅需要在对应的回调函数中增加相应的逻辑功能代码即可。
这个工具支持绝大部分TKiner控件,可应付一般GUI的需求。
(列表参见下面的控件说明)。
1.适用对象
适用于学习了TKinter并不想太麻烦写GUI代码,也不想用其他工具和框架
比如wxPython,PyQt4的同学。
适用于界面不太复杂的小程序开发,界面复杂的还是适用wxPython等框架吧。
因为TKinter为Python标准库,使用TKinter完成的Python程序可以称为
“绿色软件”,不需要目标机器上安装wxPython,PyQt4等框架,只要有Python
的机器就能运行。
如果软件逻辑不是很复杂,通常一个*.py搞定,不像其他框架,需要几个文件。
(如果不希望py运行时弹出黑漆漆的命令行窗口,后缀名请改为pyw)
2.使用方法简介
2.1 首先注册此插件,可以使用自带的安装程序,或自己手动完成。
2.2 打开VB6,新建一个标准EXE工程,在窗体上设计自己的GUI布局,这个
工作估计没有VB基础的同学都可以完成,同时可以设置相应的控件属性。
2.3 如果使用自带安装程序安装了插件,现在VB的工具条上应该有一个新
图标(一片橙红色羽毛),如果没有,到菜单"外接程序"|"外接程序管理器"
里面启动Visual Tkinter,Visual Tkinter图标和菜单应该会出现。
2.4 启动Visual Tkinter后,先按“刷新窗体列表”按钮,列出当前工程的所有
窗体和控件列表。
2.5 逐个确认各控件的输出属性,在要输出的选项前打钩,如果必要,
可以在属性列表中双击修改属性的值。(一般情况不需要再修改控件属性)。
VisualTkinter尽量的将VB控件属性翻译成Tkinter控件属性,比如字体、颜色
初始值、外观、状态等,甚至包括按钮类和菜单的快捷键设置等待。
当然了,如果部分属性没有对应关系的,需要在VisualTkinter界面上设置。
2.6 按“生成代码”按钮则在代码预览窗口生成代码,可以双击代码预览窗口
放大阅读,也可以直接修改代码。
2.7 确认完成后可以将代码拷贝到剪贴板或保持到文件。
布局可以使用百分比定位(相对定位)或绝对坐标定位(按像素定位),
百分比定位为有一个好处,主界面大小变化后,控件也可以相对变化大小。
如果不希望主界面大小变化后控件跟随变化,可以选择绝对坐标定位。
注:如果修改了以前设计的界面,可以选择仅输出main函数或界面生成类。
不影响外部已经实现的逻辑代码。
2.8 如果程序有多个GUI界面,可以在VB工程中添加窗体,就可以选择产生
哪个窗体的对应代码。
2.9 针对结构化代码,如果要在Python代码中引用和修改其他控件的值,
可以使用全局字典gComps,这个字典保存了所有的GUI元素和一些对应的
控件变量,可以直接使用形如gComps["Text1Var"].set("new Text")的代码
来访问对应控件。
如果输出的是面向对象代码,则可以在界面派生类Application中直接访问
对应的控件。
2.10 一般的GUI框架都会将UI部分和逻辑代码部分分别放在不同的文件中,在
逻辑代码文件中导入UI文件,实现修改UI不影响逻辑代码。因为对于实现
简单的程序来说,我偏爱单文件,所以我将UI类和逻辑代码类都放在同一个
文件中,在修改界面后,你可以直接覆盖对应的Application_ui类即可实现
界面的变更,不过如果增加了新的事件回调函数,需要在子类Application
中增加才行。
3.目前支持的控件列表
3.1 Label
标签条在VB和Python中基本一样。如果不启用ttk,则在文本中插入\n来换行,
如果启用了ttk,则只支持单行文本(多行可以使用Message控件实现)。
3.2 TextBox
Python文本框有两种:Entry和Text,如果VB的TextBox的MultiLine=False,则
生成Entry,否则生成Text。
3.3 Frame
对应Python的LabelFrame控件,做为其他控件的容器,或做为界面元素视觉分类。
3.4 CommandButton
对应Python的Button,没有太多区别。
为了代码简洁,窗体的退出按钮可以设置Cancel属性为True,然后程序自动生成
对应Tkinter的destroy回调,这样就不需要再实现一个回调函数。
在VB里面字母前增加一个"&"符号可以直接绑定一个快捷键Alt+对应字母,
VisualTkinter也支持此设置,自动生成对应的事件绑定代码。
其他控件比如CheckBox等有"标题"属性的控件一样如此处理。
3.5 CheckBox
多选按钮对应Python的Checkbutton。
3.6 OptionButton
单选按钮对应Python的Radiobutton。
tkinter中Radiobutton的分组方法和VB有些不一样(分组意味着组内的单选按钮自动
互斥,用户选择一个则其他的自动取消)。在VB中,如果你使用Frame将几个
OptionButton圈起来,则这几个OptionButton自动成为一组。
但是在tkinter中,你要将需要分成一组的Radiobutton的variable属性设置为同一个
变量,然后各个Radiobutton的value值要不一样,具体是什么值你可以随便设置,
反正不一样就行,最简单的就是1/2/3等,或者一个设置为man,另一个设置为woman,
在对应的Radiobutton被选择后,variable变量自动设置为对应的value值,读取即可
知道哪个Radiobutton被选中了,反之设置variable变量会导致对应的Radiobutton
被选中。
3.7 ComboBox
组合框在Tkinter中没有对应的控件,比较类似的只有OptionMenu,类似ComboBox
的Style=2 (Dropdown List)时的表现,一个下拉列表,只能在列表中选择一个值,
不能直接输入。所以建议在VB的ComboBox中写下所有的下拉列表值。
如果启用了TTK主题扩展库支持,则直接对应到TTK的Combobox,外形和行为基本
一致。
3.8 ListBox
列表框对应Python的Listbox,行为也类似,可以在设计阶段设置初始列表。
如果需要滚动,则在适当位置创建滚动条,如果滚动条紧靠着列表框的右边或下边,
并且长度(水平滚动条)或高度(垂直滚动条)差不多,则滚动条和列表框自动绑定,
如果没有自动绑定,则可以在Addin界面选择其xscrollcommand或yscrollcommand
属性为对应滚动条的.set方法。
3.9 HScrollBar, VScrollBar
滚动条在Python中为Scrollbar,通过设置orient来控制水平还是垂直。
3.10 Slider
类似对应Python中的Scale。
3.11 PictureBox
简单对应到Python中的Canvas,用做其他控件的容器或画图容器使用。
如果需要滚动,则在适当位置创建滚动条,如果滚动条紧靠着图像框的右边或下边,
并且长度(水平滚动条)或高度(垂直滚动条)差不多,则滚动条和图像框自动绑定,
如果没有自动绑定,可以在Addin界面选择其xscrollcommand和yscrollcommand
属性为对应滚动条的.set方法。
3.12 Menu
可以使用VB的菜单编辑器来设计Python的菜单。
在VB中的菜单标题为"-"是分隔条。
也可以在正常的菜单标题中增加(&+字
- 1
- 2
- 3
前往页