tkinter python 从是消息框打开框架
tkinter python open frame from yes msg box
经过编辑和改写,更加清晰易读。
我只提取了这部分代码。
如果您按下打开 zs 页面,框架 zs 将打开。当我在按 open msg
打开的对话框中按 yes 时,我想实现同样的事情
提前致谢
代码:
import tkMessageBox
import Tkinter as tk
from Tkinter import *
from functools import partial
LARGE_FONT= ("Verdana", 12)
class ChangePages(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack()
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (MainPage, PageZS):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(MainPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
#MainPage
class MainPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
def C(*args): return partial(self.option_changed, *args)
f = Frame(self)
f.pack(side='top')
def zsmessage():
result = tkMessageBox.askquestion('Open page ZS', 'Do you want open page ZS ?', icon='warning')
if result == 'yes':
print 'Open page ZS'
self.command=lambda: controller.show_frame(PageZS)
else:
print 'NO'
btnzs = Button(f,text='Open MSG',fg='blue',font=('Helvetica',26),height=1, width=25,command=zsmessage)
btnzs.grid(row=2,column=1)
btnzsold=Button(f,text='Open Page ZS',fg='blue',font=('Helvetica',26),height=1, width=25,command=lambda: controller.show_frame(PageZS))
btnzsold.grid(row=2,column=5)
class PageZS(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
f = Frame(self)
f.pack(side='left')
labelspacing=Label(f,text='PAGE ZS',fg='red',font=("Arial", 12, "bold"),width=15,height=0,relief='groove').grid(row=0,column=0)
app = ChangePages()
app.geometry('1000x500+0+0')
app.title('Title ')
app.mainloop()
除非我不明白你的问题,否则解决方案是在答案为 "yes":
时简单地调用你的函数
def zsmessage():
result = tkMessageBox.askquestion(...)
if result == 'yes':
print "yes pressed"
controller.show_frame(PageZS)
经过编辑和改写,更加清晰易读。 我只提取了这部分代码。 如果您按下打开 zs 页面,框架 zs 将打开。当我在按 open msg
打开的对话框中按 yes 时,我想实现同样的事情提前致谢
代码:
import tkMessageBox
import Tkinter as tk
from Tkinter import *
from functools import partial
LARGE_FONT= ("Verdana", 12)
class ChangePages(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack()
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (MainPage, PageZS):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(MainPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
#MainPage
class MainPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
def C(*args): return partial(self.option_changed, *args)
f = Frame(self)
f.pack(side='top')
def zsmessage():
result = tkMessageBox.askquestion('Open page ZS', 'Do you want open page ZS ?', icon='warning')
if result == 'yes':
print 'Open page ZS'
self.command=lambda: controller.show_frame(PageZS)
else:
print 'NO'
btnzs = Button(f,text='Open MSG',fg='blue',font=('Helvetica',26),height=1, width=25,command=zsmessage)
btnzs.grid(row=2,column=1)
btnzsold=Button(f,text='Open Page ZS',fg='blue',font=('Helvetica',26),height=1, width=25,command=lambda: controller.show_frame(PageZS))
btnzsold.grid(row=2,column=5)
class PageZS(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
f = Frame(self)
f.pack(side='left')
labelspacing=Label(f,text='PAGE ZS',fg='red',font=("Arial", 12, "bold"),width=15,height=0,relief='groove').grid(row=0,column=0)
app = ChangePages()
app.geometry('1000x500+0+0')
app.title('Title ')
app.mainloop()
除非我不明白你的问题,否则解决方案是在答案为 "yes":
时简单地调用你的函数def zsmessage():
result = tkMessageBox.askquestion(...)
if result == 'yes':
print "yes pressed"
controller.show_frame(PageZS)