#python #tkinter
#python #tkinter
Вопрос:
Итак, что я пытаюсь сделать, это открыть файл при нажатии кнопки и отобразить содержимое в списке. Это то, что у меня есть до сих пор, но я не могу отобразить listbox, не говоря уже о том, чтобы информация была в listbox:
#!/usr/bin/perl -w
import time
from Tkinter import *
import tkFileDialog
def listbox(listbox):
def open_file():
file = tkFileDialog.askopenfilename()
openFile = open(file)
for line in openFile:
listbox.insert(END, line)
open_file()
class App:
def __init__(self, parent):
frame = Frame(parent.title("Buttons"))
frame.pack()
root.pack_propagate(0)
self.exit = Button(frame, text="QUIT", fg="red", command=frame.quit)
self.exit.pack(side=LEFT)
self.open = Button(frame, text="Open...", command=self.call_listbox)
self.open.pack(side=LEFT)
frame.listbox = Frame()
scrollme = Scrollbar(frame.listbox)
self.listbox = Listbox(frame.listbox, yscrollcommand = scrollme.set)
scrollme.config(command = self.listbox.yview)
scrollme.pack(side = RIGHT, fill = Y)
self.listbox.pack()
self.listbox.insert(END, "Code:")
def call_listbox(self):
listbox(self.listbox)
root = Tk()
app = App(root)
root.mainloop()
есть предложения? Спасибо
Комментарии:
1. Есть ли причина, по которой у вас есть
#!/usr/bin/perl -w
первая строка вашего скрипта? Для меня это похоже на Python.
Ответ №1:
Вы забываете упаковать фрейм, содержащий listbox.
FWIW, ваша перегрузка имени «listbox» делает ваш код очень запутанным — у вас есть def listbox(listbox)
, self.listbox
и frame.listbox
. И у вас также есть call_listbox
и Listbox
класс, который нужно добавить к путанице.
Комментарии:
1. Я упаковываю сразу после scrollme.pack, и я согласен, что это сбивает с толку, это всего лишь грубое кодирование, и у меня еще не было возможности обозначить вещи так, как я хочу
2. @Blizbiggy: нет, это не так. Нигде в вашем коде вы не делаете что-то вроде
frame.listbox.pack()
. Прочитайте мой ответ еще раз: вы не упаковываете фрейм , в котором находится listbox.3. оххххххх хорошо, теперь я это вижу, лол. и после этого это работает 🙂 после некоторого просмотра функции, похоже, сливаются в один O.O я полагаю, что пришло время сделать их помеченными немного лучше. Еще раз спасибо!