목록 상자가 루트 인 경우이 기능이 제대로 작동하지만 상위 창으로 이동할 때 스크롤 막대가 더 이상 나타나지 않습니다. 여기 목록 상자 클래스를 ROOT - Tkinter에서 Toplevel로 이동할 때 yScroll을 느슨하게합니다.
내가 같은 모양 I 유지의 희망으로 다중 열 레이아웃으로 이동하는 데 필요한 전에 특정 코드가 내 원래 원래 구문을 포함class App:
def __init__(self):
self.listb=Toplevel()
self.listb.transient(root)
self.listb.title=('DB View')
self.vsb = Scrollbar(orient="vertical", command=self.OnVsb)
self.listNum = Listbox(self.listb, yscrollcommand=self.vsb.set)
self.listRoster = Listbox(self.listb, yscrollcommand=self.vsb.set)
self.vsb.pack(side="right",fill="y")
self.listNum.pack(side="left",fill="x", expand=True)
self.listRoster.pack(side="left",fill="x", expand=True)
self.listNum.bind("<MouseWheel>", self.OnMouseWheel)
self.listRoster.bind("<MouseWheel>", self.OnMouseWheel)
dbi = mdb.connect("localhost", port=3306, user="user", passwd="access", db="interactive_db")
cursor = dbi.cursor()
cursor.execute("""SELECT num FROM active_roster""")
rows = cursor.fetchall()
cursor.execute("""SELECT firstname, surname, assign FROM active_roster""")
staff =cursor.fetchall()
cursor.execute("""SELECT assign FROM active_assign""")
aassign = cursor.fetchall()
dbi.close()
print(rows)
print(aassign)
print (staff)
for results in rows:
self.listNum.insert("end", results)
for results2 in staff:
self.listRoster.insert("end", results2)
self.listb.mainloop()
def OnVsb(self, *args):
self.listNum.yview(*args)
self.listRoster.yview(*args)
def OnMouseWheel(self, event):
self.listNum.yview("scroll", event.delta,"units")
self.listRoster.yview("scroll",event.delta,"units")
return "break"
root = Tk()
root.title("Main")
root.geometry("900x600")
app=App()
listb = MultipleScrollingListbox()
#PRE-DUAL COLUMN SYNTAX PRE-CLASS DEF
numLabel=Label(root, text="Num #")
numLabel.grid(row=0,column=0)
assLabel=Label(root, text="Assignment")
assLabel.grid(row=0,column=2)
num_input=StringVar()
num_input=Entry(root,textvariable=num_input)
num_input.grid(row=0,column=1)
ass_input=StringVar()
ass_input=Entry(root,textvariable=ass_input)
ass_input.grid(row=0,column=3)
rosterList=Listbox(root, height=6,width=65)
rosterList.grid(row=2, column=0, rowspan=9, columnspan=4)
rosterList.bind('<<ListboxSelect>>', on_selection)
commScroll=Scrollbar(root)
commScroll.grid(row=2, column=4, rowspan=9)
rosterList.configure(yscrollcommand=commScroll.set)
commScroll.configure(command=rosterList.yview)
root.mainloop()
합니다 (aassign 쿼리가 적용되지 않은 주)입니다 클래스 정의로 이전하기 시작했습니다. 새로운 것들이 생기기 시작했습니다. ...
저는 Tkinter를 처음 접했고 OnVsb 정의가 어수선 해 보이므로 여기에 어떤 방향이 필요합니다. 그것은 이전에 작업 한 이유 첫 번째 루트에
self.vsb = Scrollbar(self.listb, orient="vertical", command=self.OnVsb)
그렇지 않으면 기본값 :
[Minimal, Complete and Verifiable example (https://stackoverflow.com/help/mcve)을 작성하십시오. 코드를 그대로 실행할 수는 없으며 디버깅을 복잡하게하는 불필요한 부분이 포함되어 있습니다. 오류를 재현 할 수 없습니다. – Nae
들여 쓰기가 여러분이 가지고있는 것과 정확히 동일하다면, 여러분은 모든'def's와 그 안에 들어있는 것들을 한 번 들여 쓸 필요가 있습니다. – Nae
prob가 표시를 업데이트하지 않습니다 – Raymond