圖為最終效果
這篇文章很長,難度不小,所以湊合看。
看下面的敘述之前先參考三篇文章:
tkinter常用參數(shù)
外部工具加入pyinstaller
page介紹
然后開始正文敘述:
python32位pyinstaller安裝后一般在這個位置
我們添加外部工具時這樣配置就行
有個注意事項(xiàng),當(dāng)打包的exe文件不帶界面時,運(yùn)行完畢會自動關(guān)閉黑窗口的,所以這種程序最好在末尾加上一行代碼:
然后我們PAGE軟件的路徑在這里:
然后我們添加PAGE外部工具時配置如下圖()
然后我們在編輯每個py文件時,使用外部工具Pyinstaller32就會自動打包到該py文件對應(yīng)目錄下
同理,打開外部Page,制作生成的界面,點(diǎn)擊保存時,默認(rèn)也會保存在當(dāng)前正在編輯的py文件所在目錄
現(xiàn)在重點(diǎn)來了,page直接保存的兩個.py文件在pycharm里面運(yùn)行時,如果代碼有中文, 是會運(yùn)行失敗了
原因是生成的代碼為gbk編碼,但pycharm默認(rèn)的utf-8
此時可以用idle打開一下生成的py文件,自動提示下面內(nèi)容
點(diǎn)ok就行,這兩個文件都點(diǎn),然后在pycharm里就能正常運(yùn)行了
然后還有個需要注意的東西,就是在函數(shù)訪問控件時,用w可以正常訪問并修改控件文本,但是不推薦這么做
這是page介紹里的用法, 這么干是不好的,比如你想改entry里面的文本,這樣就懵逼了
其實(shí)應(yīng)該在控件拖拽的時候,就在右邊屬性的textvar里定義好函數(shù)名
然后在support.py代碼里這么干:
這樣運(yùn)行后的結(jié)果:
點(diǎn)擊按鈕后:
好了,會了這個操作過后,后面的都不是問題了。當(dāng)然,這個tkinter可視化設(shè)計(jì)工具比之前的vb6的工具用起來稍微麻煩點(diǎn)
但關(guān)鍵是此工具比較新,最近還活躍更新,而且與python的tkinter工具控件及屬性完全對應(yīng),一個不多一個不少
相比起vb6設(shè)計(jì),不用去看vb里面和tkinter完全不同的一些細(xì)節(jié),及不完善的配置
最后也附上vb6工具的教程地址,不過本人現(xiàn)在用page,基本就不再用vb6的tkiner-designer了
https://blog.csdn.net/captain811/article/details/79340215
附上兩個文件:
測試獲取.py
# GUI module generated by PAGE version 4.22 # in conjunction with Tcl version 8.6 # May 21, 2019 07:00:29 PM CST platform: Windows NT import tkinter.ttk as ttk '''Starting point when module is the main routine.''' 測試獲取_support.set_Tk_var() 測試獲取_support.init(root, top) def create_Toplevel1(root, *args, **kwargs): '''Starting point when module is imported by another program.''' 測試獲取_support.set_Tk_var() 測試獲取_support.init(w, top, *args, **kwargs) def __init__(self, top=None): '''This class configures and populates the toplevel window. top is the toplevel containing window.''' _bgcolor = '#d9d9d9' # X11 color: 'gray85' _fgcolor = '#000000' # X11 color: 'black' _compcolor = '#d9d9d9' # X11 color: 'gray85' _ana1color = '#d9d9d9' # X11 color: 'gray85' _ana2color = '#ececec' # Closest X11 color: 'gray92' top.geometry('600x450+650+150') top.title('New Toplevel') top.configure(background='#d9d9d9') self.Label1 = tk.Label(top) self.Label1.place(relx=0.05, rely=0.156, height=23, width=42) self.Label1.configure(background='#d9d9d9') self.Label1.configure(disabledforeground='#a3a3a3') self.Label1.configure(foreground='#000000') self.Label1.configure(text='''版本號''') self.Button_獲取 = tk.Button(top) self.Button_獲取.place(relx=0.45, rely=0.156, height=28, width=35) self.Button_獲取.configure(activebackground='#ececec') self.Button_獲取.configure(activeforeground='#000000') self.Button_獲取.configure(background='#d9d9d9') self.Button_獲取.configure(command=測試獲取_support.button_獲取被單擊) self.Button_獲取.configure(disabledforeground='#a3a3a3') self.Button_獲取.configure(foreground='#000000') self.Button_獲取.configure(highlightbackground='#d9d9d9') self.Button_獲取.configure(highlightcolor='black') self.Button_獲取.configure(pady='0') self.Button_獲取.configure(text='''獲取''') self.Entry_版本號 = tk.Entry(top) self.Entry_版本號.place(relx=0.167, rely=0.156,height=27, relwidth=0.24) self.Entry_版本號.configure(background='white') self.Entry_版本號.configure(disabledforeground='#a3a3a3') self.Entry_版本號.configure(font='TkFixedFont') self.Entry_版本號.configure(foreground='#000000') self.Entry_版本號.configure(insertbackground='black') self.Entry_版本號.configure(textvariable=測試獲取_support.text_版本號) self.Entry_版本號.configure(width=144) if __name__ == '__main__':
測試獲取_support.py
# Support module generated by PAGE version 4.22 # in conjunction with Tcl version 8.6 # May 21, 2019 07:00:35 PM CST platform: Windows NT import tkinter.ttk as ttk text_版本號 = tk.StringVar() print('測試獲取_support.button_獲取被單擊') text_版本號.set('點(diǎn)擊按鈕后改變的文本') def init(top, gui, *args, **kwargs): global w, top_level, root # Function which closes the window. if __name__ == '__main__':
|