2013-03-23 4 views
0

Это программа, которую я сделал на данный момент, но у меня есть проблема ... как я могу сделать, когда я нажимаю на Button1, который затем открывает новое окноновое окно в Python 3 и Tkinter, нажав на кнопку

import sys 
from tkinter import * 
import tkinter as tk 

def mhello1(): 
    mlabel = Label(mGui, text='A1').pack() 
def mhello2(): 
    mlabel = Label(mGui, text='A2').pack() 
def mhello3(): 
    mlabel = Label(mGui, text='A3').pack() 
def mhello4(): 
    mlabel 
    return 
def mAbout(): 
    messagebox.showinfo(title="About",message="program") 
    return 
def mQuit(): 
    mExit = messagebox.askyesno(title="Quit",message="y/n") 
    if mExit > 0: 
     mGui.destroy() 
     return 

mGui = Tk() 

mGui.geometry('450x450+200+200') 
mGui.title('program') 
mGui.configure(bg='gray') 

mlabel = Label(text='option:',fg='red',bg = 'blue').pack() 

mbutton1 = Button(mGui,text ='Button1',command = mhello1, height=5, width=20).pack() 
mbutton2 = Button(mGui,text ='Button2',command = mhello2, height=5, width=20).pack() 
mbutton3 = Button(mGui,text ='Button3',command = mhello3, height=5, width=20).pack() 
mbutton4 = Button(mGui,text ='Button4',command = mhello4, height=5, width=20).pack() 
mlabel2 = Label(text='activity:',fg='red',bg = 'blue').pack() 

menubar=Menu(mGui) 
filemenu = Menu(menubar, tearoff = 0) 
filemenu.add_command(label="qwer") 
filemenu.add_command(label="quit",command = mQuit) 
menubar.add_cascade(label="more options",menu=filemenu) 

helpmenu = Menu(menubar, tearoff = 0) 
helpmenu.add_command(label="Help Docs") 
helpmenu.add_command(label="About", command = mAbout) 
menubar.add_cascade(label="help",menu=helpmenu) 
mGui.config(menu=menubar) 

mGui.mainloop() 

я попробовать эту программу, но она не работает: Python 3 and tkinter opening new window by clicking the button

есть способ, что я не использую TkInter TopLevel?

Tnx много :)

ответ

3

Поскольку вы должны создать только один корень окна, вы должны использовать Toplevel, чтобы открыть новый.

def mhello1(): 
    toplevel = Toplevel() 
    toplevel.title('Another window') 
    toplevel.focus_set() 
+0

@jozajozic рад, что это помогло. Не стесняйтесь принять ответ, если он решит вашу проблему. –

1

, если вы хотите использовать MessageBox использовать эти строки ниже

from tkinter import * 
from tkinter import messagebox 
Смежные вопросы