Page官方文档
个人理解:
1.拖拽的方式来布局,就不用调relax和relay了
2.A…的可以调这些空间的参数,更加美观
3.生成两个代码一个叫原名,一个多了_support,其中.py的更多的是各控件的细节,而_support.py的是控件连接的功能函数,两个py文件相互引用,所以无论运行那个都会成功显示。这样做的好处是吧细节和功能分开
4.page编辑的尺寸可能和在pycharm编译器下运行的大小不同,需要自己在.py中调整代码中的参数
5.要加图片可能会用到Imagetk库,但是直接调用在PIL库里找不到这个库
解决方法 每个import Tkinter as tk后跟上
from tkinter import messagebox
from tkinter.filedialog import *
可能这里面有图片处理相关的东西
然后可用PhotoImage方法读入图片
icon1 = PhotoImage(file="./img/ICON1.png")
用create_image方法加载到canvas里面 self.Canvas1.create_image(20,15,anchor=NW,image=icon1)
目前的效果:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# GUI module generated by PAGE version 6.1
# in conjunction with Tcl version 8.6
# May 09, 2021 09:57:01 PM CST platform: Windows NT
import sys
try:
import Tkinter as tk
from tkinter import messagebox
from tkinter.filedialog import *
except ImportError:
import tkinter as tk
from tkinter import messagebox
from tkinter.filedialog import *
try:
import ttk
py3 = False
except ImportError:
import tkinter.ttk as ttk
py3 = True
import page1_support
def vp_start_gui():
'''Starting point when module is the main routine.'''
global val, w, root
root = tk.Tk()
root.title("语音识别垃圾分类小程序")
root.iconbitmap('./img/favicon.ico')
page1_support.set_Tk_var()
top = Toplevel1 (root)
page1_support.init(root, top)
root.mainloop()
w = None
def create_Toplevel1(rt, *args, **kwargs):
'''Starting point when module is imported by another module.
Correct form of call: 'create_Toplevel1(root, *args, **kwargs)' .'''
global w, w_win, root
#rt = root
root = rt
w = tk.Toplevel (root)
page1_support.set_Tk_var()
top = Toplevel1 (w)
page1_support.init(w, top, *args, **kwargs)
return (w, top)
def destroy_Toplevel1():
global w
w.destroy()
w = None
class Toplevel1:
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'
self.style = ttk.Style()
if sys.platform == "win32":
self.style.theme_use('winnative')
self.style.configure('.',background=_bgcolor)
self.style.configure('.',foreground=_fgcolor)
self.style.configure('.',font="TkDefaultFont")
self.style.map('.',background=
[('selected', _compcolor), ('active',_ana2color)])
top.geometry("1200x601+153+152")
top.minsize(180, 1)
top.maxsize(1284, 701)
top.resizable(1, 1)
top.title("小海垃圾分类管家")
top.configure(background="#ffffff")
top.configure(highlightbackground="#d9d9d9")
top.configure(highlightcolor="black")
self.Frame1 = tk.Frame(top)
self.Frame1.place(relx=0.0, rely=0.0, relheight=1.011, relwidth=1.001)
self.Frame1.configure(relief='groove')
self.Frame1.configure(borderwidth="5")
self.Frame1.configure(relief="groove")
self.Frame1.configure(background="#f1ede6")
self.Frame1.configure(highlightbackground="#ffffff")
self.Frame1.configure(highlightcolor="black")
self.TSeparator1 = ttk.Separator(self.Frame1)
self.TSeparator1.place(relx=0.391, rely=0.007, relheight=0.98)
self.TSeparator1.configure(orient="vertical")
self.Message1 = tk.Message(self.Frame1)
self.Message1.place(relx=0.008, rely=0.014, relheight=0.066
, relwidth=0.376)
self.Message1.configure(background="#f1ede6")
self.Message1.configure(font="-family {微软雅黑} -size 18 -weight bold")
self.Message1.configure(foreground="#453735")
self.Message1.configure(highlightbackground="#d9d9d9")
self.Message1.configure(highlightcolor="black")
self.Message1.configure(text='''语音识别垃圾分类系统''')
self.Message1.configure(width=483)
self.Message2 = tk.Message(self.Frame1)
self.Message2.place(relx=0.016, rely=0.099, relheight=0.085
, relwidth=0.367)
self.Message2.configure(background="#f1ede6")
self.Message2.configure(font="-family {微软雅黑} -size 12 -weight bold")
self.Message2.configure(foreground="#99682d")
self.Message2.configure(highlightbackground="#d9d9d9")
self.Message2.configure(highlightcolor="black")
self.Message2.configure(justify='center')
self.Message2.configure(text='''请告诉小海你想投放的垃圾名称,
例如香蕉皮、啤酒瓶……''')
self.Message2.configure(width=473)
self.Message3 = tk.Message(self.Frame1)
self.Message3.place(relx=0.039, rely=0.205, relheight=0.048
, relwidth=0.126)
self.Message3.configure(background="#f1ede6")
self.Message3.configure(font="-family {微软雅黑} -size 12")
self.Message3.configure(foreground="#000000")
self.Message3.configure(highlightbackground="#d9d9d9")
self.Message3.configure(highlightcolor="black")
self.Message3.configure(text='''语言选择类型''')
self.Message3.configure(width=162)
self.language = ttk.Combobox(self.Frame1)
self.language.place(relx=0.187, rely=0.212, relheight=0.041
, relwidth=0.144)
self.language.configure(textvariable=page1_support.combobox)
global choice
choice = ["普通话(带标点)", "英语", "粤语", "四川话"]
self.language["values"] = choice
self.language.configure(takefocus="")
self.begin = tk.Button(self.Frame1)
self.begin.place(relx=0.132, rely=0.762, height=71, width=159)
self.begin.configure(activebackground="#000000")
self.begin.configure(activeforeground="white")
self.begin.configure(activeforeground="#000000")
self.begin.configure(background="#000000")
self.begin.configure(disabledforeground="#a3a3a3")
self.begin.configure(font="-family {微软雅黑} -size 11 -weight bold")
self.begin.configure(foreground="#ffffff")
self.begin.configure(highlightbackground="#d9d9d9")
self.begin.configure(highlightcolor="#ffffff")
self.begin.configure(pady="0")
self.begin.configure(text='''开始识别''')
self.TSeparator2 = ttk.Separator(self.Frame1)
self.TSeparator2.place(relx=0.018, rely=0.917, relwidth=0.352)
self.get_audio_1 = tk.Button(self.Frame1)
self.get_audio_1.place(relx=0.078, rely=0.296, height=115, width=309)
self.get_audio_1.configure(activebackground="#ececec")
self.get_audio_1.configure(activeforeground="#000000")
self.get_audio_1.configure(anchor='e')
self.get_audio_1.configure(background="#f1ede6")
self.get_audio_1.configure(borderwidth="3")
self.get_audio_1.configure(command=page1_support.choose)
self.get_audio_1.configure(disabledforeground="#a3a3a3")
self.get_audio_1.configure(font="-family {微软雅黑} -size 13 -weight bold")
self.get_audio_1.configure(foreground="#000000")
self.get_audio_1.configure(highlightbackground="#f1ede6")
self.get_audio_1.configure(highlightcolor="#f1ede6")
self.get_audio_1.configure(highlightthickness="0")
self.get_audio_1.configure(pady="0")
self.get_audio_1.configure(text='''音频选择 ''')
self.get_audio_1_1 = tk.Button(self.Frame1)
self.get_audio_1_1.place(relx=0.078, rely=0.536, height=115, width=309)
self.get_audio_1_1.configure(activebackground="#ececec")
self.get_audio_1_1.configure(activeforeground="#000000")
self.get_audio_1_1.configure(anchor='e')
self.get_audio_1_1.configure(background="#f1ede6")
self.get_audio_1_1.configure(disabledforeground="#a3a3a3")
self.get_audio_1_1.configure(font="-family {微软雅黑} -size 13 -weight bold")
self.get_audio_1_1.configure(foreground="#000000")
self.get_audio_1_1.configure(highlightbackground="#d9d9d9")
self.get_audio_1_1.configure(highlightcolor="black")
self.get_audio_1_1.configure(pady="0")
self.get_audio_1_1.configure(text='''实时录音 ''')
self.Message4 = tk.Message(self.Frame1)
self.Message4.place(relx=0.007, rely=0.922, relheight=0.047
, relwidth=0.377)
self.Message4.configure(background="#f1ede6")
self.Message4.configure(font="-family {微软雅黑} -size 8")
self.Message4.configure(foreground="#a5a2a5")
self.Message4.configure(highlightbackground="#d9d9d9")
self.Message4.configure(highlightcolor="black")
self.Message4.configure(text='''声明:上传音频除作识别外无其他用途,请无需担心您的隐私泄露。''')
self.Message4.configure(width=484)
self.Frame2 = tk.Frame(self.Frame1)
self.Frame2.place(relx=0.389, rely=0.0, relheight=0.994, relwidth=0.61)
self.Frame2.configure(relief='groove')
self.Frame2.configure(borderwidth="2")
self.Frame2.configure(relief="groove")
self.Frame2.configure(background="#f1ede6")
self.Frame2.configure(highlightbackground="#d9d9d9")
self.Frame2.configure(highlightcolor="black")
self.Message1_1 = tk.Message(self.Frame2)
self.Message1_1.place(relx=0.204, rely=0.014, relheight=0.067
, relwidth=0.616)
self.Message1_1.configure(background="#f1ede6")
self.Message1_1.configure(font="-family {微软雅黑} -size 17 -weight bold")
self.Message1_1.configure(foreground="#453735")
self.Message1_1.configure(highlightbackground="#d9d9d9")
self.Message1_1.configure(highlightcolor="black")
self.Message1_1.configure(text='''垃圾分类排行榜''')
self.Message1_1.configure(width=483)
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# Support module generated by PAGE version 6.1
# in conjunction with Tcl version 8.6
# May 09, 2021 09:35:58 PM CST platform: Windows NT
import sys
try:
import Tkinter as tk
from tkinter import messagebox
from tkinter.filedialog import *
except ImportError:
import tkinter as tk
from tkinter import messagebox
from tkinter.filedialog import *
try:
import ttk
py3 = False
except ImportError:
import tkinter.ttk as ttk
py3 = True
def set_Tk_var():
global combobox
combobox = tk.StringVar()
combobox.set("普通话(默认)")
def init(top, gui, *args, **kwargs):
global w, top_level, root
w = gui
top_level = top
root = top
def choose():
global filename
filename = askopenfilename()
print(filename)
sys.stdout.flush()
def destroy_window():
# Function which closes the window.
global top_level
top_level.destroy()
top_level = None
if __name__ == '__main__':
import page1
page1.vp_start_gui()