pycharm安装外部工具tkinter和pyinstaller

图为最终效果

这篇文章很长,难度不小,所以凑合看。

看下面的叙述之前先参考三篇文章:

tkinter常用参数

外部工具加入pyinstaller

page介绍

然后开始正文叙述:

python32位pyinstaller安装后一般在这个位置

我们添加外部工具时这样配置就行

有个注意事项,当打包的exe文件不带界面时,运行完毕会自动关闭黑窗口的,所以这种程序最好在末尾加上一行代码:

然后我们PAGE软件的路径在这里:

然后我们添加PAGE外部工具时配置如下图()

然后我们在编辑每个py文件时,使用外部工具Pyinstaller32就会自动打包到该py文件对应目录下

同理,打开外部Page,制作生成的界面,点击保存时,默认也会保存在当前正在编辑的py文件所在目录

现在重点来了,page直接保存的两个.py文件在pycharm里面运行时,如果代码有中文, 是会运行失败了

原因是生成的代码为gbk编码,但pycharm默认的utf-8

此时可以用idle打开一下生成的py文件,自动提示下面内容

点ok就行,这两个文件都点,然后在pycharm里就能正常运行了

然后还有个需要注意的东西,就是在函数访问控件时,用w可以正常访问并修改控件文本,但是不推荐这么做

这是page介绍里的用法, 这么干是不好的,比如你想改entry里面的文本,这样就懵逼了

其实应该在控件拖拽的时候,就在右边属性的textvar里定义好函数名

然后在support.py代码里这么干:

这样运行后的结果:

点击按钮后:

好了,会了这个操作过后,后面的都不是问题了。当然,这个tkinter可视化设计工具比之前的vb6的工具用起来稍微麻烦点

但关键是此工具比较新,最近还活跃更新,而且与python的tkinter工具控件及属性完全对应,一个不多一个不少

相比起vb6设计,不用去看vb里面和tkinter完全不同的一些细节,及不完善的配置

最后也附上vb6工具的教程地址,不过本人现在用page,基本就不再用vb6的tkiner-designer了

https://blog.csdn.net/captain811/article/details/79340215

附上两个文件:

测试获取.py

  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # GUI module generated by PAGE version 4.22
  5. # in conjunction with Tcl version 8.6
  6. # May 21, 2019 07:00:29 PM CST platform: Windows NT
  7. import sys
  8. try:
  9. import Tkinter as tk
  10. except ImportError:
  11. import tkinter as tk
  12. try:
  13. import ttk
  14. py3 = False
  15. except ImportError:
  16. import tkinter.ttk as ttk
  17. py3 = True
  18. import 测试获取_support
  19. def vp_start_gui():
  20. '''Starting point when module is the main routine.'''
  21. global val, w, root
  22. root = tk.Tk()
  23. 测试获取_support.set_Tk_var()
  24. top = Toplevel1 (root)
  25. 测试获取_support.init(root, top)
  26. root.mainloop()
  27. w = None
  28. def create_Toplevel1(root, *args, **kwargs):
  29. '''Starting point when module is imported by another program.'''
  30. global w, w_win, rt
  31. rt = root
  32. w = tk.Toplevel (root)
  33. 测试获取_support.set_Tk_var()
  34. top = Toplevel1 (w)
  35. 测试获取_support.init(w, top, *args, **kwargs)
  36. return (w, top)
  37. def destroy_Toplevel1():
  38. global w
  39. w.destroy()
  40. w = None
  41. class Toplevel1:
  42. def __init__(self, top=None):
  43. '''This class configures and populates the toplevel window.
  44. top is the toplevel containing window.'''
  45. _bgcolor = '#d9d9d9' # X11 color: 'gray85'
  46. _fgcolor = '#000000' # X11 color: 'black'
  47. _compcolor = '#d9d9d9' # X11 color: 'gray85'
  48. _ana1color = '#d9d9d9' # X11 color: 'gray85'
  49. _ana2color = '#ececec' # Closest X11 color: 'gray92'
  50. top.geometry('600x450+650+150')
  51. top.title('New Toplevel')
  52. top.configure(background='#d9d9d9')
  53. self.Label1 = tk.Label(top)
  54. self.Label1.place(relx=0.05, rely=0.156, height=23, width=42)
  55. self.Label1.configure(background='#d9d9d9')
  56. self.Label1.configure(disabledforeground='#a3a3a3')
  57. self.Label1.configure(foreground='#000000')
  58. self.Label1.configure(text='''版本号''')
  59. self.Button_获取 = tk.Button(top)
  60. self.Button_获取.place(relx=0.45, rely=0.156, height=28, width=35)
  61. self.Button_获取.configure(activebackground='#ececec')
  62. self.Button_获取.configure(activeforeground='#000000')
  63. self.Button_获取.configure(background='#d9d9d9')
  64. self.Button_获取.configure(command=测试获取_support.button_获取被单击)
  65. self.Button_获取.configure(disabledforeground='#a3a3a3')
  66. self.Button_获取.configure(foreground='#000000')
  67. self.Button_获取.configure(highlightbackground='#d9d9d9')
  68. self.Button_获取.configure(highlightcolor='black')
  69. self.Button_获取.configure(pady='0')
  70. self.Button_获取.configure(text='''获取''')
  71. self.Entry_版本号 = tk.Entry(top)
  72. self.Entry_版本号.place(relx=0.167, rely=0.156,height=27, relwidth=0.24)
  73. self.Entry_版本号.configure(background='white')
  74. self.Entry_版本号.configure(disabledforeground='#a3a3a3')
  75. self.Entry_版本号.configure(font='TkFixedFont')
  76. self.Entry_版本号.configure(foreground='#000000')
  77. self.Entry_版本号.configure(insertbackground='black')
  78. self.Entry_版本号.configure(textvariable=测试获取_support.text_版本号)
  79. self.Entry_版本号.configure(width=144)
  80. if __name__ == '__main__':
  81. vp_start_gui()

测试获取_support.py

  1. #! /usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Support module generated by PAGE version 4.22
  5. # in conjunction with Tcl version 8.6
  6. # May 21, 2019 07:00:35 PM CST platform: Windows NT
  7. import sys
  8. try:
  9. import Tkinter as tk
  10. except ImportError:
  11. import tkinter as tk
  12. try:
  13. import ttk
  14. py3 = False
  15. except ImportError:
  16. import tkinter.ttk as ttk
  17. py3 = True
  18. def set_Tk_var():
  19. global text_版本号
  20. text_版本号 = tk.StringVar()
  21. text_版本号.set('初始文本')
  22. def button_获取被单击():
  23. print('测试获取_support.button_获取被单击')
  24. sys.stdout.flush()
  25. text_版本号.set('点击按钮后改变的文本')
  26. def init(top, gui, *args, **kwargs):
  27. global w, top_level, root
  28. w = gui
  29. top_level = top
  30. root = top
  31. def destroy_window():
  32. # Function which closes the window.
  33. global top_level
  34. top_level.destroy()
  35. top_level = None
  36. if __name__ == '__main__':
  37. import 测试获取
  38. 测试获取.vp_start_gui()
(0)

相关推荐