Кнопка не отображается в окне - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь добавить в окно три кнопки. Пробовал без классификации, работает нормально. Но когда я добавляю его в класс, он показывает мне только пустое окно. Что я делаю не так?

PS: Я все еще изучаю веревки в python.

from tkinter import filedialog,Button,Frame,Tk

class Textify:

    def __init__(self,master):
        self.master = master
        self.initializeOutlineFrame

    def initializeOutlineFrame(self):
        self.convertImageButton = Button(master,text="Convert Image",command=self.browseIMG,width=80,height=30)
        self.convertImageButton.pack()
        self.convertPdfButton = Button(master,text="Convert pdf",command=self.browsePDF)
        self.convertPdfButton.pack()
        self.batchConvertButton = Button(master,text="Convert multiple files",command=self.browseAllFiles)
        self.batchConvertButton.pack()

    def browsePDF(self):
        filename = filedialog.askopenfilename(initialdir = "/",
        title = "Select a File",filetypes = (("pdf files","*.pdf*"),("all files", "*.*")))

    def browseIMG(self):
        filename = filedialog.askopenfilename(initialdir = "/",
        title = "Select a File",filetypes = (("jpg files","*.JPG*"),("png files","*.PNG*")))

    def browseAllFiles(self):
        filename = filedialog.askopenfilename(initialdir = "/",
        title = "Select files",filetypes = (("jpg files","*.JPG*"),("png files","*.PNG*"),("pdf files","*.pdf*")))


window = Tk()
window.title("Textify")
window.geometry("450x450")
app = Textify(window)
window.mainloop()

enter image description here

1 Ответ

0 голосов
/ 29 мая 2020
  1. Используйте initializeOutlineFrame() вместо initializeOutlineFrame.
  2. В def initializeOutlineFrame(self, master) замените все master на self.master.
  3. Будьте осторожны! width=80,height=30 определяет размер не в пикселях, а в символах. Итак, на этом этапе, если вы запустите код, вы увидите гигантскую кнопку, а не другие кнопки. Удалите или измените значения, например, как width=17,height=3.

[необязательно] Вы можете использовать кнопки сетки вместо упаковки для добавления пространства вокруг. Так выглядит лучше:

def initializeOutlineFrame(self):

    self.convertImageButton = Button(self.master, text="Convert Image", \
    command=self.browseIMG, width=17, height=3)
    self.convertImageButton.grid(column=0, row=0, padx=10, pady=10)

    self.convertPdfButton = Button(self.master, text="Convert pdf", \
    command=self.browsePDF, width=17, height=3)
    self.convertPdfButton.grid(column=1, row=0, padx=10, pady=10)

    self.batchConvertButton = Button(self.master, text="Convert multiple files", \
    command=self.browseAllFiles, width=17, height=3)
    self.batchConvertButton.grid(column=2, row=0, padx=10, pady=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...