내 응용 프로그램의 요구에 맞는 메뉴를 만드는 데 문제가 있습니다. 사용자가 소스 메뉴의 내부 비교를 위해 가능한 항목을 선택하도록 요구하는 앱을 만들고 있습니다.Python Tkinter 하위 메뉴 라디오 버튼
지금 내 메뉴 조직 같은 것을보고 indended됩니다
FILE | EDIT | OPTIONS | SOURCE | HELP
내 문제는 소스 내부 선택의 수 (~ 100) 매우 크고 navicable 할 필요가있다 신속하게 (< 오초) 또는 내 응용 프로그램의 대상 사용자가 아마 그것을 사용하지 않습니다.
내가 생각한 해결책은 그들이 나온 데이터 구조 아래에 옵션을 중첩시키는 것입니다. 효과적으로 이것은 내가 두 목록으로 소스 옵션 및 하위 옵션을 처리 할 수 있습니다 의미 :
["Data1", "Data2", "Data3"]
및
[["Option1_1", "Option1_2", "Option1_3"],
["Option2_1","Option2_2","Option2_3"],
["Option3_1","Option3_2","Option3_3"]]
내가 광범위하게 검색하고 Tkinter를 효과적으로 하위 메뉴를 만드는 방법을 찾을 수 있습니다. radiobuttons의 하위 메뉴 (checkbuttons도 작동합니다)가 표시되면 버튼 클릭으로 명령이 활성화되지 않고 실행 가능한 솔루션이 아닙니다. 내가하고 싶은 무엇
내가이 작업을 수행 할 수있는 방법
FILE | SOURCE | ETC...
Data1 |
Option1_1
Option1_2
Option1_3
Data2 |
Data3
같은 것을 보이는 메뉴를 만들인가? 가급적이면 버튼을 목록에 저장 한 다음 메뉴에 추가하여 선택 호출 및 선택 취소가 가능하도록해야합니다. Radiobuttons 또는 checkbuttons가 작동 할 것이고, checkbuttons가 선호됩니다. 당신은 메뉴에 Checkbutton
또는 Button
인스턴스를 추가 할 수 없습니다
from Tkinter import *
class App(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.makeMenu(master)
def makeMenu(self, parent):
menuBar = Frame(parent, relief = 'raised', borderwidth = 1)
fileMenu = Menubutton(menuBar, text = "File")
fileMenu.pack(side = 'left')
fileMenu.menu = Menu(fileMenu, tearoff = 0)
load = Menubutton(fileMenu.menu, text="Load")
load.pack(anchor=W)
source = Menubutton(fileMenu.menu, text="Source")
source.pack(anchor=W)
source.menu = Menu(source, tearoff = 0)
self._listi = ["who", "what", "where", "how"]
self._buttonList = []
for l in self._listi:
c = Checkbutton(master = source.menu, text=l, command=lambda arg0=l: self.test(arg0))
self._buttonList.append([l, c])
c.pack()
save = Button(master=fileMenu.menu, text="Save")
save.pack(anchor=W)
exit = Button(master=fileMenu.menu, text="Exit", command = self.quit)
exit.pack()
fileMenu['menu'] = fileMenu.menu
menuBar.pack()
def test(self, arg0):
for b in self._buttonList:
if arg0 != b[0]:
b[1].deselect()
elif arg0 == b[0]:
b[1].select()
# create app
myApp = App()
# start program
myApp.mainloop()
메뉴를 만드는 방법을 알고 있다고 가정 할 때 하위 메뉴를 만드는 것이 특히 어렵지 않습니다. 우리가 시도한 것을 보여 주시고 잘못된 일을 지적 해 주실 수 있습니다. –
오케이. 나는 nonworking 코드의 한 예를 추가했다. 나는 정말로 이것을하는 방법의 예가 필요하고 그것을 찾을 수 없다. –