2017-01-03 5 views
0

メニューバーのオプションをクリックすると、クリックすると新しいウィンドウが表示されます。ただし、メニューが表示される前にメインプログラムが起動した直後に新しいウィンドウが表示されます。メインプログラムで実行するオプションをクリックする前に、新しいトップレベルウィンドウが表示されます。

オプションがクリックされたときにウィンドウが表示され、メインプログラムの実行が開始された直後は表示されません。

#Main Program 

from tkinter import * 
from tkinter import ttk 
import module 

root = Tk() 

main_menu_bar = Menu(root) 

main_option = Menu(main_menu_bar, tearoff=0) 
main_option.add_command(label = "Option 1", command = module.function()) 
main_menu_bar.add_cascade(label="Main Option", menu=main_option) 
root.config(menu=main_menu_bar) 

root.mainloop() 


#Module 
from tkinter import * 
from tkinter import ttk 

def function(): 
    new_window = Toplevel() 

答えて

2

の代わりに:

main_option.add_command(label = "Option 1", command = module.function()) 

試してみてください。

main_option.add_command(label = "Option 1", command = module.function) 

あなたは括弧を置けばあなたがそれらを入れていない場合にのみしますが、機能は、直ちに実行されますイベント信号で実行されるこの関数への参照です。あなたが後で実行するために、リスト内の関数を保存したい場合は

それをより明確にするために、同じことが起こる:

def f(): 
    print("hello") 

a = [f()] # this will immediately run the function 
      # (when the list is created) and store what 
      # it returns (in this case None) 

b = [f] # the function here will *only* run if you do b[0]() 
+0

あなたTrakJohnsonをありがとう!とても有難い! –

関連する問題