Форум сайта python.su
0
Суть проблемы в том что в окне со списком не происходит перемещение выделения (перемещается только подчеркивание) строки при нажатии стрелок вверх и вниз, при использовании метода pack все работает но не могу добиться нужного расположения элементов (работающий пример прикреплен).
from tkinter import * import os, sqlite3 root=Tk() root.minsize(20,10) root.maxsize(20,10) root.title('123') #root.iconbitmap('123.ico') root.config(padx=10) def Chtenie(): sqlites_db=[] for filename in os.listdir(os.getcwd()): try: res=sqlite3.connect(filename).cursor().execute('SELECT * from sqlite_master') sqlites_db.append(filename) except sqlite3.DatabaseError: pass return sqlites_db def interfaceGrid(): sbar=Scrollbar(root) list=Listbox(root, relief=SUNKEN, bd=2, height=10) sbar.config(command=list.yview) list.config(yscrollcommand=sbar.set) list.grid(row=1, rowspan=3, column=0, padx=0, pady=10) sbar.grid(row=1, rowspan=3, column=1, sticky=NS, pady=10) pos=0 optionsBG=Chtenie() for label in optionsBG: list.insert(pos, label) pos+=1 list.config(selectmode=SINGLE, setgrid=1) list.bind('<Double-1>', handleList) Label(root).grid(row=1, column=0) konnekt=Button(root, text='Connect',width=10) konnekt.grid(row=1, column=2, padx=10, pady=10) konnekt.bind('<Button-1>', handleList) Button(root, text='Delete Base', width=10, command=print('DELETE')).grid(row=2, column=2, padx=10, pady=10) Button(root, text='Import Base', width=10, command=print('Import')).grid(row=3, column=2, padx=10, pady=10) Button(root, text='New Base', width=10, command=print('NewBase')).grid(row=4, column=2, padx=10, pady=10) Entry(root).grid(row=4, column=0) root.listbox=list def handleList(event): index=root.listbox.curselection() label=root.listbox.get(index) runCommand(root, label) def runCommand(root, selection): print('You selected:', selection) if __name__=='__main__': interfaceGrid() mainloop()
Прикреплённый файлы:
kod.rar (1,6 KБ)
Офлайн
58
1. Тема должна быть в разделе GUI.
2. Никогда не используйте конструкцию:
from tkinter import *
import tkinter root = tkinter.Tk() root.title('123') #root.iconbitmap('123.ico') root.config(padx=10) # def interfaceGrid(): fr_list = tkinter.Frame(root) fr_list.grid(row=1, rowspan=3, column=0, padx=0, pady=10) sbar=tkinter.Scrollbar(root) list=tkinter.Listbox(fr_list, relief="sunken", bd=2, height=10) sbar.config(command=list.yview) list.config(yscrollcommand=sbar.set) list.pack() sbar.grid(row=1, rowspan=3, column=1, sticky="ns", pady=10) optionsBG = [11, 12, 13, 14, 15] list.insert("end", *optionsBG) list.bind('<Double-1>', handleList) konnekt=tkinter.Button(root, text='Connect',width=10) konnekt.grid(row=1, column=2, padx=10, pady=10) konnekt.bind('<Button-1>', handleList) tkinter.Button(root, text='Delete Base', width=10).grid(row=2, column=2, padx=10, pady=10) tkinter.Button(root, text='Import Base', width=10).grid(row=3, column=2, padx=10, pady=10) tkinter.Button(root, text='New Base', width=10).grid(row=4, column=2, padx=10, pady=10) tkinter.Entry(root).grid(row=4, column=0) root.listbox=list # def handleList(event): index=root.listbox.curselection() label=root.listbox.get(index) runCommand(root, label) def runCommand(root, selection): print('You selected:', selection) if __name__=='__main__': interfaceGrid() mainloop()
Офлайн
0
Спасибо! Проблема решена. Все работает.
Офлайн