2017-10-24 5 views
0

tkinter를 사용하여 왼쪽에 몇 개의 버튼이 포함 된 인터페이스를 만들고 싶었습니다.이 인터페이스는 상당히 정적이며 오른쪽의 위젯과 잘 맞 춥니 다. 오른쪽에서 Text Widget 위의 Entry 위젯을 원했습니다. 두 가지 모두 그에 따라 크기가 조정됩니다 (X 축에서만 Entry 위젯).그리드 관리자에서 크기 조정하기 tkinter

이 코드는 텍스트 위젯의 크기가 조정되지 않고 입력 위젯의 크기가 텍스트 위젯과 맞춰 지기만하는 것을 제외하고는 거의 모든 것을 수행합니다. 루트/열 구성을 시도하면 상단 프레임이 어색하게 크기가 조정됩니다.

다음은이 코드에서 Tkinter를 인터페이스의 사진 : 당신이 볼 수 있듯이, 입력 및 텍스트 위젯의 크기를 조정하지 않는

output

from tkinter import * 

def main(): 
    root = Tk() 
    root.geometry("300x400") 

    framet = Frame(root) 
    frameb = Frame(root) 

    framet.grid(row=0, column=0, sticky='ew') 
    frameb.grid(row=1, column=0, sticky='news') 

    button1 = Button(framet, text='one', width=8) 
    button1.grid(row=0, column=0) 

    button2 = Button(frameb, text='two', width=8) 
    button2.grid(row=1, column=0, sticky='n') 

    entry1 = Entry(framet) 
    entry1.grid(row=0, column=1, sticky='ew') 

    text1 = Text(frameb, highlightbackground='black', highlightthickness=1) 
    text1.grid(row=1, column=1, sticky='news') 

    framet.columnconfigure(1, weight=1) 

if __name__ == '__main__': 
    main() 

. 버튼을 정적 상태로 유지하면서 아무 것도 움직이지 않고 (크기를 조정하는 것만)하면서 어떻게이 작업을 수행 할 수 있습니까?

답변

0

이 기능을 사용할 수 있습니까? 내가 # 덧글로 라인을 변경, 내 생각 엔, 내가 뭘했는지 기억할 수 없다. 나는 그걸 작동 시키려고 노력했다. 문제가되는 것은 하나의 문제이다. 엔트리 위젯은 버튼과 같은 높이가 아니다. , 나는 당신이 수동으로 높이를 설정할 수 있다고 생각합니다. 그러나

from tkinter import * 

def main(): 
    root = Tk() 
    root.grid_columnconfigure(1,weight=1) # the text and entry frames column 
    root.grid_rowconfigure(0,weight=1) # all frames row 

    buttonframe = Frame(root) 
    buttonframe.grid(row=0, column=0, sticky="nswe") 
    entry_text_frame = Frame(root) 
    entry_text_frame.grid(row=0, column=1, sticky="nswe") 
    entry_text_frame.grid_columnconfigure(0,weight=1) # the entry and text widgets column 
    entry_text_frame.grid_rowconfigure(1,weight=1) # the text widgets row 

    button1 = Button(buttonframe, text='one', width=8) 
    button1.grid(row=0, column=0, sticky='nswe') 
    button2 = Button(buttonframe, text='two', width=8) 
    button2.grid(row=1, column=0, sticky='nswe') 

    entry1 = Entry(entry_text_frame) 
    entry1.grid(row=0, column=0, sticky='nswe') 

    text1 = Text(entry_text_frame, highlightbackground='black', highlightthickness=1) 
    text1.grid(row=1, column=0, sticky='news') 

    root.geometry("300x400") 

if __name__ == '__main__': 
    main() 
+2

당신이 다르게 한 것을 설명하면이 답변이 더 좋을 것입니다. 그렇지 않으면 중요한 변화가 무엇인지 파악하기 위해 줄 단위로 읽어야합니다. 또한,'geometry' 명령을 호출 할 때도 상관 없습니다. –

+0

그러나 이것은 효과가있었습니다, 고마워요! – ShuckleShackle

+1

@BryanOakley 감사합니다. 스택에있는 tkinter에 대한 설명이 지난 몇 달 동안 나를 도왔습니다. 많은 사람들이 파이썬에서 GUI 개발을 배우도록 돕고 있습니다. < – citizen2077

관련 문제