免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: cdhigh
打印 上一主题 下一主题

[原创]使用VB设计Python的GUI界面(Tkinter Designer) 附源码,[更新V1.5.1] [复制链接]

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
41 [报告]
发表于 2013-01-08 15:23 |只看该作者
用上了,很强悍,原来这都可以。

不过有一点我有疑问,我只学过python,见过一次别人用vb生成窗体。感觉用写gui代码很烦,但是窗口里的每个元素各有各的对齐属性,这些属性怎么通过拖放鼠标这么简单的动作来准确设计?可能是我自己不会用vb,但是有这工具还是很方便,生成代码之后自己动手再改就方便多了。

论坛徽章:
0
42 [报告]
发表于 2013-01-08 20:13 |只看该作者
如果是对齐几个控件,可以选择你需要对齐的控件,然后选择菜单“格式”|“对齐”,然后你就可以选择左对齐右对齐顶对齐底对齐等,
还可以选择几个控件后,选择菜单“格式”|“统一尺寸”,设置高度一致或宽度一致或两者都一致。
菜单“格式”里面的水平间距和垂直间距也很有用,可以设计更和谐的界面。
============
如果是控件内文字的对齐,可以选择控件,然后在右下角的属性窗口中选择控件的对齐属性。

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
43 [报告]
发表于 2013-01-08 20:43 |只看该作者
回复 42# cdhigh


    如果只是这样对齐用鼠标操作不难实现,但是控件的pack,grid,place等方法又各有很多选项,比如相対于右下角的位置控件的外部最小间距,内部的最小间距,都能通过鼠标来完成吗?你说的这些操作我今天试了下,确实很方便。

论坛徽章:
0
44 [报告]
发表于 2013-01-08 21:22 |只看该作者
本帖最后由 cdhigh 于 2013-01-08 21:23 编辑

对于place()布局来说,是用不到外部padding属性的,外部padding属性用于pack()和grid()。我的工具仅适用place()布局,因为这可以更精细的控制控件位置,pack()和grid()都太粗粒度了。

内部间距如果用于摆放控件,和外部间距一样,适用place()布局,不需要。

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
45 [报告]
发表于 2013-01-09 15:32 |只看该作者
本帖最后由 ssfjhh 于 2013-01-09 15:43 编辑

回复 44# cdhigh


    又去学习了一下place(),确实可以更加精准的调节,已经用上了你的插件,确实方便很多,直接生成后,如果感觉不够精确,再仔细调整参数,很方便。

另外,try语句中的destory()是做什么用的?我看了下help(Tk),直译大概是“销毁所有子控件,这将结束Tcl 解释器”,但是还是不明白是它是什么作用,求解

destroy(self)  Destroy this and all descendants widgets. This will  end the application of this Tcl interpreter.

我看别人写的代码中基本上没有这么个try except语句,运行也完全没有问题。
try:
        top.destroy()
    except:
        pass


另外我写的那个硬盘整数分区计算器中并没有用到re模块,运行也没有问题,编译的时候也没有错,但是编译出的exe文件却运行出错,提示,缺少re模块,在代码中import re之后就完全正常了,是怎么回事?

论坛徽章:
0
46 [报告]
发表于 2013-01-09 19:44 |只看该作者
在mainloop后面增加的destory只是一个容错措施,因为如果你在代码中使用top.quit()方法退出mainloop()的话,主窗体是不会自动销毁的,这样界面就卡住了,(我之前在网上看到有些人这样用,导致出错,所以我就增加了这个容错),这样在代码中使用quit也可以关闭主窗体。
如果在代码中一直都使用top.destroy()方法退出的话,这个语句是没有必要的。

至于cx_Freeze生成exe的re模块问题,我想着应该是cx_Freeze打包了一些使用re模块的模块或函数之类,可能是一个BUG,也可能是打包时配置问题。
因为我没有用过cx_Freeze,所以不清楚什么原因。

论坛徽章:
0
47 [报告]
发表于 2013-01-10 10:14 |只看该作者
经过一整天不下20次的VB6完整版和VB6精简版的交替反复安装和卸载的比较和摸索试验,终于搞定了如何在VB6精简版中使用VisualTkinter问题。

V1.4版本已经发布,目前支持VB6精简版使用,这下坛友们就不需要安装完整几十M的企业版了,我目前试验的VB6绿色精简版才5.9M。

论坛徽章:
0
48 [报告]
发表于 2013-01-11 03:06 |只看该作者
因为我机器本来装过VB完整企业版,所以测试环境不理想,今天使用另外一台机器测试发现6M的VB6精简版的VISUALTKINTER图标显示不出现(仅出现一个方框),点击无反应,但是在“外接程序”菜单下选择"VisualTkinter"菜单项执行,功能不受影响。
如果能接受通过菜单来执行VisualTkinter,则6M的VB6精简版足够使用了,否则可以选择12M版本的精简版,图标正常。
比如这是一个12M的精简版地址:
http://www.hack520.com/vb6-lite/

论坛徽章:
4
金牛座
日期:2013-10-11 16:12:50卯兔
日期:2014-07-31 09:17:19辰龙
日期:2014-08-08 09:28:02狮子座
日期:2014-09-14 20:32:05
49 [报告]
发表于 2013-01-11 09:39 |只看该作者
本帖最后由 ssfjhh 于 2013-01-11 09:40 编辑

回复 48# cdhigh


楼主说用的vb精简版只有5.9M,体积跟我用的精简版精确接近,应该是同一个了。

在“外接程序”菜单下选择"VisualTkinter"菜单项执行,功能不受影响,这个我早发现了,只是没有什么影响,所以没有到这里反馈。
但是用精简版的还有其它问题,先上个图。

图片是我截的几个图为了方便合成在一起。

每次忘却vb的时候,都会跳出图片中所示的前两个窗口,没用,关闭之。

前两个窗口关闭之后会跳出中间两个窗口,又没用,再关闭之,

最后在将VB中的控件拖放到窗口中时,又会出现两个安装solidworks的窗口,又没有用,再关闭之。

这已经超出我的理解范围了,我就启动一软件,跟这些软件的安装程序有什么关系,每次启动都要跳出这么多窗口,每个窗口都需要不少于两次的鼠标占击才能关闭,跟中了毒似的。lz知道是怎么一回事儿吗?

另外说到用vb拖放控件的问题,我之前怀疑过,很多选项是否能够通过拖放来完成,现在碰到问题了,想了好久没有解决,顺便在这里问问lz

我想实现一个类似于QQ群聊天窗口的窗口,右边有一列,左边有三个文本窗口,像QQ群聊天窗口一样,右边的群成员列表的宽度在拖放窗口的时候保持宽度不变,但是群列表的高度却能够跟随窗口高度变化,左边的文本窗口跟随窗口大小自由变化,(聊天记录窗口大小变化,文本录入窗口只有宽度变化)

我想实现的是三个文本窗口的大小保持相等,间距的绝对高度保持不变,我想了很久都实现不了,感觉不可能用place方法实现,求助。

论坛徽章:
0
50 [报告]
发表于 2013-01-11 09:48 |只看该作者
6M精简版,需要COMMTB32.DLL这个文件,工具栏上才有显示
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP