2017-08-28 2 views
1

私のGUIで "Channel"という名前のサブメニューに2つのラジオボタン "BBC"と "CNN"のセットがあります。 add_radiobuttonメソッドを使用しようとしましたが、ラジオボタンがサブメニューの下に表示されますが、「ニュース」メニューのサブメニューではなく「チャンネル」サブメニューの属性として動作します。Tkinterのサブメニューにラジオボタンを追加するには

from tkinter import * 


root = Tk() 
root.title("main") 
root.geometry("500x500") 


MAIN_MENU = Menu(root) 
root.config(menu=MAIN_MENU) 

File_menu = Menu(MAIN_MENU, tearoff=0) 
MAIN_MENU.add_cascade(label="News", menu=File_menu, underline=0) 
File_menu.add_command(label="Channel") 

File_menu.add_radiobutton(label="BBC") 
File_menu.add_radiobutton(label="CNN") 

Settings_menu = Menu(MAIN_MENU, tearoff=0) 
MAIN_MENU.add_cascade(label="History", menu=Settings_menu, underline=3) 

root.mainloop() 
+0

サイドメニューとしてオプションBBC、CNNを使用してメニューを「チャンネル」の右にポップアップしたいですか? –

+0

正確に右側にあります。 –

+0

明示的にファイルメニューに追加しています。なぜあなたは彼らがどこか他の場所に現れることを期待していますか?あなたはそれらをメニューに追加しようとしましたか? –

答えて

1

あなたは、最初のサブメニューを作ることにラジオボタンを追加し、メインメニューにカスケードとして、それを追加する必要があります。次に、そのメニューをメニューバーに追加します。

menuBar = tk.Menu(root) 
menu1 = tk.Menu(root) 
submenu = tk.Menu(root) 
submenu.add_radiobutton(label="Option 1") 
submenu.add_radiobutton(label="Option 2") 

menuBar.add_cascade(label="Menu 1", menu=menu1) 
menu1.add_cascade(label="Subemnu with radio buttons", menu=submenu) 

全作業例:

import tkinter as tk 

root = tk.Tk() 

menuBar = tk.Menu(root) 
menu1 = tk.Menu(root) 
submenu = tk.Menu(root) 
submenu.add_radiobutton(label="Option 1") 
submenu.add_radiobutton(label="Option 2") 

menuBar.add_cascade(label="Menu 1", menu=menu1) 
menu1.add_cascade(label="Subemnu with radio buttons", menu=submenu) 

root.config(menu=menuBar) 
root.mainloop() 

あなたはおそらくあなたのラジオボタンにいくつかの属性を追加することをお勧めします。 より完全な形は次のようになります。

add_radiobutton(label="Option 1", value=1, variable=optionVar, command=on_option_1) 

  • labelがメニューに表示されるテキストです。
  • variableは、tk.Variableインスタンスです。通常、IntVarまたはStringVarです。
  • valueは、このオプションを選択するとvariableに設定される値です。
  • commandは、オプションが選択されたときに実行されるコールバックです。
+0

期待どおりに作業していますが、私の下線が機能していないと、これを解決する手続きを提案できます。 –

関連する問題