这是一个简短的例子。我有两个帧:Page1
和Page2
prj_conf
是默认字典
在{prj_conf
的值Next按钮跳到Page2
在Page2
中,Entryproj
项显示prj_conf["_cal_input_pwr"]
的值
目标是加载文本文件并更新prj_conf
的值,然后按Page1
中的下一步按钮。我的GUI跳转到Page2
,并且Entryproj
条目中的prj_conf["_cal_input_pwr"]
值应该来自文本文件
然而,在原始Page2
中有许多小部件,所以我想在按下下一步按钮时更新Page2
中的所有小部件值。我该怎么做
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog
from tkinter import messagebox as mBox
# create dafault dictionary
prj_keys = ["_time", "_projet", "_DUT", "_user", "_project_dir", "_cal_input_pwr"]
prj_conf = {key: "0" for key in prj_keys}
#read text file
def read_settingfile():
print("test")
class main_win(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.geometry(self)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.rowconfigure(0, weight=1)
container.columnconfigure(0, weight=1)
self.frames = {}
for F,geometry in zip(( Page1, Page2), ( "900x617"
, "993x817")):
page_name = F.__name__
frame = F(parent=container, controller=self)
self.frames[page_name] = (frame, geometry)
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame("Page1")
def show_frame(self, page_name):
frame, geometry = self.frames[page_name]
self.geometry(geometry)
frame.tkraise()
class Page1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.configure(bg = "#d8d8d8")
self.controller = controller
self.labelframe_newfile = tk.LabelFrame(self)
self.loadLabelframe = tk.LabelFrame(self)
self.button_next = tk.Button(self, command = lambda: self.setnextdata())
self.button_next.place(relx=0.811, rely=0.891, height=41, width=150)
self.button_next.configure(activebackground="#ececec")
self.button_next.configure(activeforeground="#000000")
self.button_next.configure(background="#d9d9d9")
self.button_next.configure(disabledforeground="#a3a3a3")
self.button_next.configure(foreground="#000000")
self.button_next.configure(highlightbackground="#d9d9d9")
self.button_next.configure(highlightcolor="black")
self.button_next.configure(pady="0")
self.button_next.configure(text='''Next''')
self.loadLabelframe.place(relx=0.033, rely=0.25, relheight=0.6
, relwidth=0.933)
self.loadLabelframe.configure(relief='groove')
self.loadLabelframe.configure(font="-family {微軟正黑體} -size 14")
self.loadLabelframe.configure(foreground="black")
self.loadLabelframe.configure(text='''Load File''')
self.loadLabelframe.configure(background="#d9d9d9")
self.loadLabelframe.configure(highlightbackground="#d9d9d9")
self.loadLabelframe.configure(highlightcolor="black")
self.loadprojfile_path = tk.StringVar()
self.Entry_loadprojfile = tk.Entry(self.loadLabelframe, textvariable = self.loadprojfile_path)
self.Entry_loadprojfile.place(relx=0.048, rely=0.723, height=31, relwidth=0.755
, bordermode='ignore')
self.Entry_loadprojfile.configure(background="white")
self.Entry_loadprojfile.configure(disabledforeground="#a3a3a3")
self.Entry_loadprojfile.configure(font="TkFixedFont")
self.Entry_loadprojfile.configure(foreground="#000000")
self.Entry_loadprojfile.configure(highlightbackground="#d9d9d9")
self.Entry_loadprojfile.configure(highlightcolor="black")
self.Entry_loadprojfile.configure(insertbackground="black")
self.Entry_loadprojfile.configure(selectbackground="#c4c4c4")
self.Entry_loadprojfile.configure(selectforeground="black")
self.button_browse_proj_fle = tk.Button(self.loadLabelframe,
command = lambda:self.dir_browse_old())
self.button_browse_proj_fle.place(relx=0.82, rely=0.723, height=31
, width=65, bordermode='ignore')
self.button_browse_proj_fle.configure(activebackground="#ececec")
self.button_browse_proj_fle.configure(activeforeground="#000000")
self.button_browse_proj_fle.configure(background="#d9d9d9")
self.button_browse_proj_fle.configure(disabledforeground="#a3a3a3")
self.button_browse_proj_fle.configure(foreground="#000000")
self.button_browse_proj_fle.configure(highlightbackground="#d9d9d9")
self.button_browse_proj_fle.configure(highlightcolor="black")
self.button_browse_proj_fle.configure(pady="0")
self.button_browse_proj_fle.configure(text='''Browse''')
self.button_load = tk.Button(self.loadLabelframe, command = lambda:self.loadfile())
self.button_load.place(relx=0.912, rely=0.723, height=31, width=49
, bordermode='ignore')
self.button_load.configure(activebackground="#ececec")
self.button_load.configure(activeforeground="#000000")
self.button_load.configure(background="#d9d9d9")
self.button_load.configure(disabledforeground="#a3a3a3")
self.button_load.configure(foreground="#000000")
self.button_load.configure(highlightbackground="#d9d9d9")
self.button_load.configure(highlightcolor="black")
self.button_load.configure(pady="0")
self.button_load.configure(text='''Load''')
def setnextdata(self):
self.controller.show_frame("Page2")
def dir_browse_old(self):
self.old_work_directory = filedialog.askopenfilename( filetypes = (("project files", "*.prj"),("all files","*.*")) )
self.loadprojfile_path.set(self.old_work_directory)
def loadfile(self):
read_settingfile(self.old_work_directory)
print("load"+str(prj_conf["_cal_input_pwr"]))
class Page2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.configure(bg = "#d8d8d8")
self.TSeparator1 = ttk.Separator(self)
self.TSeparator1.place(relx=0.005, rely=0.092, relwidth=0.987)
self.label_title = tk.Label(self)
self.label_title.place(relx=0.07, rely=0.018, height=55, width=793)
self.label_title.configure(activebackground="#f9f9f9")
self.label_title.configure(activeforeground="black")
self.label_title.configure(background="#d9d9d9")
self.label_title.configure(disabledforeground="#a3a3a3")
self.label_title.configure(font="-family {新細明體} -size 30")
self.label_title.configure(foreground="#000000")
self.label_title.configure(highlightbackground="#d9d9d9")
self.label_title.configure(highlightcolor="black")
self.label_title.configure(text='''Step 2. Calibration Setting''')
self.button_last = tk.Button(self, command = lambda: self.last_update())
self.button_last.place(relx=0.03, rely=0.93, height=41, width=150)
self.button_last.configure(activebackground="#ececec")
self.button_last.configure(activeforeground="#000000")
self.button_last.configure(background="#d9d9d9")
self.button_last.configure(disabledforeground="#a3a3a3")
self.button_last.configure(foreground="#000000")
self.button_last.configure(highlightbackground="#d9d9d9")
self.button_last.configure(highlightcolor="black")
self.button_last.configure(pady="0")
self.button_last.configure(text='''Last''')
self.inpu_pow_leve_frame = tk.Frame(self)
self.inpu_pow_leve_frame.place(relx=0.081, rely=0.208, relheight=0.092
, relwidth=0.846)
self.inpu_pow_leve_frame.configure(relief='groove')
self.inpu_pow_leve_frame.configure(borderwidth="2")
self.inpu_pow_leve_frame.configure(relief="groove")
self.inpu_pow_leve_frame.configure(background="#d9d9d9")
self.inpu_pow_leve_frame.configure(highlightbackground="#d9d9d9")
self.inpu_pow_leve_frame.configure(highlightcolor="black")
self.label_inpu_pow_leve = tk.Label(self.inpu_pow_leve_frame)
self.label_inpu_pow_leve.place(relx=0.036, rely=0.267, height=36
, width=271)
self.label_inpu_pow_leve.configure(activebackground="#f9f9f9")
self.label_inpu_pow_leve.configure(activeforeground="black")
self.label_inpu_pow_leve.configure(background="#d9d9d9")
self.label_inpu_pow_leve.configure(disabledforeground="#a3a3a3")
self.label_inpu_pow_leve.configure(font="-family {微軟正黑體} -size 14")
self.label_inpu_pow_leve.configure(foreground="#000000")
self.label_inpu_pow_leve.configure(highlightbackground="#d9d9d9")
self.label_inpu_pow_leve.configure(highlightcolor="black")
self.label_inpu_pow_leve.configure(text='''Input Power Level (dBm)''')
self.var_inpu_pow_leve = tk.IntVar()
self.var_inpu_pow_leve.set(prj_conf["_cal_input_pwr"])
self.Entryproj = tk.Entry(self.inpu_pow_leve_frame,textvariable = self.var_inpu_pow_leve)
self.Entryproj.place(relx=0.383, rely=0.267,height=31, relwidth=0.58)
self.Entryproj.configure(background="white")
self.Entryproj.configure(disabledforeground="#a3a3a3")
self.Entryproj.configure(font="TkFixedFont")
self.Entryproj.configure(foreground="#000000")
self.Entryproj.configure(highlightbackground="#d9d9d9")
self.Entryproj.configure(highlightcolor="black")
self.Entryproj.configure(insertbackground="black")
self.Entryproj.configure(selectbackground="#c4c4c4")
self.Entryproj.configure(selectforeground="black")
def last_update(self):
self.controller.show_frame("Page1")
app = main_win()
app.mainloop()
目前没有回答
相关问题 更多 >
编程相关推荐