Я использую Python и Tkinter для создания графического интерфейса для программы, которую пишу, и у меня возникла пара проблем.
У меня есть три объекта, произошедших от LabelFrame, в объекте, произошедшем от Frame. Один из потомков LabelFrame - это два столбца соответствующих объектов Label и Entry.
Проблема в том, что существует разное количество пар Label и Entry, и их может быть больше, чем умещается на экране. Мне нужен способ сделать полосу прокрутки для этого LabelFrame, чтобы все помещалось на экране. Я пробовал разные способы создания объекта Scrollbar, но, похоже, ничего не работает. Как я могу привязать полосу прокрутки к этому кадру?
Кроме того, мне нужно иметь возможность обновлять или перезагружать этот LabelFrame при вызове метода load_message()
, но он просто отображает новые пары поверх старых (поэтому, когда в новом наборе меньше пар, старый набор все еще виден внизу). Я пытался использовать grid_forget()
, но либо ничего не меняется, либо весь кадр не отображается. Как я могу забыть этот дисплей, а затем снова его отобразить?
Вот код для этого класса:
class freq_frame(LabelFrame):
def __init__(self, master = None, text = 'Substitutions'):
LabelFrame.__init__(self, master, text = text)
self.grid()
def load_message(self):
self.frequency = get_freq(message)
self.create_widgets()
def create_widgets(self):
self.label_list = [Label(self, text = get_label(char, self.frequency[char]), justify = LEFT) for char in self.frequency.keys()]
self.entry_list = [Entry(self, width = 1) for char in self.frequency.keys()]
for n in range(len(self.label_list)):
self.label_list[n].grid(column = 0, row = n)
for n in range(len(self.entry_list)):
self.entry_list[n].grid(column = 1, row = n)
Если кто-нибудь может помочь с любой из этих проблем, я был бы признателен.
Кроме того, этот вопрос может показаться немного тонким, но я не знаю, что добавить. Не стесняйтесь спрашивать дополнительную информацию (но будьте конкретны).
Спасибо!