PanedWindow와 관련된 몇 가지 문제가 있습니다. 잘하지 못하고 조금 혼란 스럽습니다.PanedWindow에서 텍스트 위젯과 관련된 문제가 발생했습니다.
#!/usr/bin/env python
import os
from Tkinter import *
import ttk
root = Tk()
root.geometry("%dx%d+0+0" % (1400,850))
mainpanedframeframe = PanedWindow(root,orient=HORIZONTAL)
mainpanedframeframe.pack(fill=BOTH, expand=TRUE)
auxframe1 = PanedWindow(mainpanedframeframe)
auxframe2 = PanedWindow(mainpanedframeframe)
mainpanedframeframe.add(auxframe1)
mainpanedframeframe.add(auxframe2)
# --------------- chtext -------------
chtext = Text(auxframe1, width=50)
auxframe1.add(chtext)
chyscrollbar=Scrollbar(auxframe1, orient=VERTICAL, command=chtext.yview)
chtext["yscrollcommand"]=chyscrollbar.set
chyscrollbar.pack(side=RIGHT,fill=Y)
# --------------- configtext -------------
configtext = Text(auxframe2, width=150)
auxframe2.add(configtext)
yscrollbar=Scrollbar(auxframe2, orient=VERTICAL, command=configtext.yview)
configtext["yscrollcommand"]=yscrollbar.set
yscrollbar.pack(side=RIGHT, fill=Y)
for i in range(50):
configtext.insert(INSERT,"test configtext \n\ntest 2\ntest 3\ntest 4\n\ntest x\n\n\n\n")
chtext.insert(INSERT,"test chtext \n\ntest 2\ntest 3\ntest 4\n\ntest x\n\n\n\n")
#------------------------------
mainloop()
작동하지만, 나는 그것을 피하는 방법을 잘 모릅니다, 시작, 1 위젯이 완전히 수축입니다 :이 예에서
나는 나란히 2 텍스트 위젯을 넣어하려고 해요 왼쪽으로.두 번째 질문 - 더 많은 수수께끼 : 두 번째 텍스트 창이 단순히 텍스트를 상속하는 클래스이고 다른 것은 필요하지 않습니다 (더 복잡한 작업이 필요하지만이 예제에서와 같이 단순히 Text()를 호출하면 세로 스크롤 막대가 전혀 표시되지 않습니다.
#!/usr/bin/env python
import os
from Tkinter import *
import ttk
class MyText(Text):
def __init__(self, parent, *args, **kwargs):
Text.__init__(self, *args, **kwargs)
self.parent = parent
root = Tk()
root.geometry("%dx%d+0+0" % (1400,850))
mainpanedframeframe = PanedWindow(root,orient=HORIZONTAL)
mainpanedframeframe.pack(fill=BOTH, expand=TRUE)
auxframe1 = PanedWindow(mainpanedframeframe)
auxframe2 = PanedWindow(mainpanedframeframe)
mainpanedframeframe.add(auxframe1)
mainpanedframeframe.add(auxframe2)
# --------------- chtext -------------
chtext = Text(auxframe1, width=50)
auxframe1.add(chtext)
chyscrollbar=Scrollbar(auxframe1, orient=VERTICAL, command=chtext.yview)
chtext["yscrollcommand"]=chyscrollbar.set
chyscrollbar.pack(side=RIGHT,fill=Y)
# --------------- configtext -------------
configtext = MyText(auxframe2, width=150)
auxframe2.add(configtext)
yscrollbar=Scrollbar(auxframe2, orient=VERTICAL, command=configtext.yview)
configtext["yscrollcommand"]=yscrollbar.set
yscrollbar.pack(side=RIGHT, fill=Y)
for i in range(50):
configtext.insert(INSERT,"test configtext \n\ntest 2\ntest 3\ntest 4\n\ntest x\n\n\n\n")
chtext.insert(INSERT,"test chtext \n\ntest 2\ntest 3\ntest 4\n\ntest x\n\n\n\n")
#------------------------------
mainloop()
감사합니다. panecget() 및 paneconfigure() 메소드에 대해 알지 못했습니다. – alessandro
두 번째 사항에 관해서는, 나는 범인이 __init__에서 부모로서 존재한다는 것을 발견했습니다; 일단 그것을 제거하면 (그리고 self.parent = parent 너무) 기하학은 완벽했습니다. – alessandro
ok - 제거 할 필요는 없지만 부모도 클래스 __init__ 함수로 전달되어야합니다. 그래서 부모의 위젯을 적절하게 지정할 수 있도록 MyText init fuction이'Text .__ init __ (self, parent, * args, ** kwargs)'를 호출하도록 수정했습니다. 그러나,'self.winfo_parent()'를 호출하여 위젯의 부모를 얻을 수 있기 때문에 부모를 녹음하는 것은 중복됩니다. – patthoyts