Chamando objetos Tkinter de outro arquivo

Nov 03 2020
class SneakerGuide(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        global stockXURLInput
        stockXURLInput = Entry(sneakerBasicDetails)
        stockXURLInput.grid(row=5, column=1)

Então, eu tenho essa classe, e dentro dela, eu tenho essa função que é uma função de inicialização e com isso eu tenho um monte de coisas diferentes que quero .get () de. Eu apenas digitei um exemplo. Mas estou tentando obter a entrada de entrada fora dessa classe (na verdade, estou tentando obtê-la de outro arquivo, mas sei como importá-los e outras coisas. Como faria para fazer isso neste caso em particular

Respostas

BryanOakley Nov 03 2020 at 08:29

Para objetos que deseja acessar fora da classe, você deve torná-los atributos de instância da classe.

Por exemplo, você não usaria globalcomo em seu exemplo. O uso de globalderrota amplamente o propósito de usar classes. Em vez disso, você faz assim:

class SneakerGuide(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        self.stockXURLInput = Entry(sneakerBasicDetails)
        self.stockXURLInput.grid(row=5, column=1)

Para obter o valor da entrada, tudo o que você precisa é uma referência à instância da classe.

root = tk.Tk()
...
guide = SneakerGuide(root)
...
print(f"The url is {guide.stockXURLInput.get9)}")

Isso não é algo exclusivo do tkinter, é assim que todos os objetos Python funcionam.