2016-09-03 1 views
-1

J'ai essayé de travailler sur les bases de tkinter juste pour arriver au point où je peux imprimer le contenu d'un certain nombre de champs d'entrée à la console avant d'essayer d'apprendre autre chose . Je l'ai eu au point où il ressemblait à la façon dont je voulais, mais je n'avais pas la fonctionnalité dont j'avais besoin. Il a été suggéré de créer une classe et de le faire de cette façon, à quel point mon interface graphique est un cadre vide sans aucun des widgets que j'avais ajoutés. Est-ce que quelqu'un sait pourquoi cela peut être?tkinter Les classes sont ennuyeuses

from tkinter import * 

class Information: 
    def __init__(self, master): 
     frame = Frame(master) 
     frame.pack() 

     self.titleLabel = Label(frame, text='Welcome to the Redaction Solutions editor!\nPlease enter the requested filepaths below.') 
     self.titleLabel.pack(side=TOP) 

     self.originalLabel = Label(frame, text='File to be edited') 
     self.originalLabel.pack(side=LEFT) 
     self.originalEntry = Entry(frame) 
     self.originalEntry.pack(side=RIGHT) 

     self.namesLabel = Label(frame, text='Items to be removed') 
     self.namesLabel.pack(side=LEFT) 
     self.namesEntry = Entry(frame) 
     self.namesEntry.pack(side=RIGHT) 

     self.destinationLabel = Label(frame, text='Edited file') 
     self.destinationLabel.pack(side=LEFT) 
     self.destinationEntry = Entry(frame) 
     self.destinationEntry.pack(side=RIGHT) 

     self.invoiceLabel = Label(frame, text='Invoice data') 
     self.invoiceLabel.pack(side=LEFT) 
     self.invoiceEntry = Entry(frame) 
     self.invoiceEntry.pack(side=RIGHT) 

     self.demoButton = Button(frame, text="Test", command=self.test) 
     self.demoButton.pack(side=LEFT) 
     self.resetButton = Button(frame, text="Reset Fields", bg="red", fg="black", command=self.reset) 
     self.resetButton.pack(side=RIGHT) 

    def test(self): 
     print(self.originalEntry.get()) 
     print(self.namesEntry.get()) 
     print(self.destinationEntry.get()) 
     print(self.invoiceEntry.get()) 

    def reset(self): 
     self.originalEntry.delete(0, END) 
     self.namesEntry.delete(0, END) 
     self.destinationEntry.delete(0, END) 
     self.invoiceEntry.delete(0, END) 

root = Tk() 
root.wm_title("RS") 
b = Information 
root.iconbitmap(r'c:\Users\pbrow\Documents\logoicon.ico') 
root.mainloop() 

Je suis aussi 99% sûr que ce soit à peu près la pire façon d'avoir écrit ce programme ... et je suis d'accord avec cela. Je veux juste qu'il fonctionne correctement, je me suis résigné à m'inquiéter de l'optimisation à une date (beaucoup) plus tard

Répondre

2

Ne vous occupez jamais de ma précédente tentative de réponse. La question est:

root = Tk() 
root.wm_title("RS") 
b = Information 
root.iconbitmap(r'c:\Users\pbrow\Documents\logoicon.ico') 
root.mainloop() 

Vous devriez faire:

b = Information(root) 

pour créer réellement l'objet d'information.

+0

Je suis assez sûr qu'il doit être 'b = Information (root)', puisque la méthode '__init__' attend un argument (au-delà de' self'). – Blckknght

+0

@Blckknght vous avez raison, j'ai mis à jour la réponse. Merci! –