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)