1
현재 파이썬에서 Tkinter 모듈을 사용하는 프로젝트에서 작업 중입니다. 나는 메뉴 위젯을 사용하고 있으며 메뉴의 각 명령에 관련된 다른 명령이 있습니다. 이 명령들 각각은 새로운 프레임을 엽니 다. 그리드 지오메트리 관리자를 사용하고 있습니다.파이썬에서 Tkinter의 다른 프레임으로 전환하는 방법
내 문제는 사용자가 프레임간에 전환 할 수 있기를 원하지만이 작업을 시도 할 때 프레임이 전환하는 대신 서로 겹칩니다. 활성 프레임을 숨기고 새 프레임을 열려면 어떻게합니까? 가능한 프레임 목록을 반복하여 모두 숨겨야한다고 말하고 싶지 않습니다.
import Tkinter as tkinter
root = tkinter.Tk()
root.minsize(400,300)
welcome = tkinter.Frame(root).grid()
label = tkinter.Label(welcome, text="Welcome to my program").grid(row=0, column=3)
button = tkinter.Button(welcome,text="Exit",command=root.destroy).grid(row=3, column=1)
def newFrame():
newFrame = tkinter.Frame(root).grid()
newFrame_name = tkinter.Label(newFrame, text="This is another frame").grid()
menu = tkinter.Menu(root)
root.config(menu=menu)
main_menu = tkinter.Menu(menu)
menu.add_cascade(label="Main Menu", menu= main_menu)
main_menu.add_command(label="New Frame", command=newFrame)
#menu.add_command(label="Exit", command=root.destroy, menu= filemenu)
root.mainloop()
사용자가 메뉴에서 새 프레임 옵션을 선택하고, 나는 NEWFRAME는 환영 프레임을 교체하려면 : 여기
는 지금까지 작성한 코드입니다.
나는 이것을 시도했지만 'NoneType'객체에는 'lift'라는 속성이 없다는 오류가 계속 발생합니다. 또한 리프트 방법으로 볼 수있는 다른 모든 프레임이 지워지거나 내가 선택한 특정 프레임을 올리겠습니까? – jules
@juleszero : '리프트'는 한 프레임 만 올립니다. NoneType 오류에 대해서는 "왜이 개체가 없음으로 설정되어 있습니까?"라고 자문 해보십시오. 내 생각 엔'frame = Frame (...). grid (...)'와 같이'frame'을 None으로 만드는 것입니다. 요컨대, 코드에 'None'으로 설정된 변수에 'lift'를 호출하는 버그가 있습니다. 어떤 코드도 게시하지 않았으므로 이제는 더 이상 명확하지 않습니다. –
그게 정확히 내 모든 프레임을 설정하는 방법이야! 나는 그것으로 인해 'None'으로 설정되는 것을 인식하지 못했습니다. 내 코드를 내 게시물을 업데이 트했습니다 잘하면 도움이됩니다. – jules