2015-04-18 2 views
1

Отредактировано и перефразировано, чтобы быть более четким и легким в использовании. Я извлек только эту часть своего кода. Если вы нажмете открытую страницу zs, откроется рамка zs. Я хочу добиться того же самого, когда я нажимаю да в диалоге, который открывается при нажатии на открытом тздtkinter python open frame from yes msg box

Спасибо заранее

Код:

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() 

ответ

0

Если нет коего-что о вашем вопросе, что я дон «т понять, решение просто вызвать вашу функцию, если ответ„да“:

def zsmessage(): 
    result = tkMessageBox.askquestion(...) 
    if result == 'yes': 
     print "yes pressed" 
     controller.show_frame(PageZS) 
+0

Да вы правы ... Я удивляюсь, почему я попробовал вызов функции с той же командой, что и кнопка д o ... так что я был действительно глуп. Большое спасибо за вашу помощь –

+0

Я думаю, что я делаю снова что-то глупое, но я добавил счетчик, и я хочу делать то же самое, но из функции счетчика, и я получаю сообщение об ошибке. я отвечу на мой вопрос, чтобы иметь возможность вставлять код –