Я пытаюсь создать приложение GUI (только начало), но у меня возникла проблема.Кнопка не отображается при использовании пакета()
Когда я использую .pack() (который мне нужно использовать), кнопка не отображается, но если я использую .grid(), она отображается.
Это код:
class TemperaturePlotApp(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent)
self.master.title("Max Temperature")
self.button = Button(self, text="Browse", command=self.load_file,
width=10, *args, **kwargs)
self.button.pack(side="left", fill="both", expand=True)
def load_file(self):
fname = askopenfilename(filetypes=(("Text File", "*.txt")))
if fname:
try:
print("""here it comes: self.settings["template"].set(fname)""")
except: # <- naked except is a bad idea
showerror("Open Source File", "Failed to read file\n'%s'" % fname)
return
def main():
root = tk.Tk()
app = TemperaturePlotApp(root)
root.geometry("800x400")
root.mainloop()
if __name__ == '__main__':
main()
Если я использую .grid(), она работает:
self.master.rowconfigure(5, weight=1)
self.master.columnconfigure(5, weight=1)
self.grid(sticky=W+E+N+S)
self.button = Button(self, text="Browse", command=self.load_file, width=10)
self.button.grid(row=1, column=0, sticky=W)
Я должен использовать .pack(), а не в сети, так что если кто-то мог пожалуйста, объясните, что я делаю неправильно, я бы очень признателен.
Благодаря Corey
Эй, спасибо, кучи для этого. Это очень ценится. Проблема в том, что мне не разрешено изменять код в или ниже метода main(), поскольку я делаю это для университета. Они также настаивают, что я использую .pack, а не .grid. Вы знаете об этом? Спасибо :) – Fishingfon
@Fishingfon Теперь вы можете упаковать свой виджет непосредственно в contructor ('__init__' method) в качестве последнего оператора. Например: 'self.pack()'. – nbro
Это было прекрасно! Спасибо heaps :) – Fishingfon