BitProgram
BitProgram

Reputation: 59

Python Tkinter GUI interface

I have a problem with GUI interface of Tkinter. The text does not print in the shell, but if Entry is placed in the first tk window get() it works... Help me?

Here is my code:

import os
from tkinter import *
##CONFIG FRS TK
import tkinter as tk
window = Tk()
window.geometry("600x500")
window.title("Gestione caldaie")
window.config(bg="gray")

name2=StringVar()
def enter():
    print(name2.get())

def test():
    clienti_caldaie=Tk()
    clienti_caldaie.resizable(False,False)
    clienti_caldaie.geometry("800x550")
    clienti_caldaie.title("Clienti e Caldaie")
    clienti_caldaie.config(bg = "#9999ff")

    ##DATI UTENTE
    name = Label(clienti_caldaie, text = "Nome e Cognome ", font = "bold", bg = "#9999ff").place(x = 0, y = 3)

    named = Entry(clienti_caldaie,textvariable=name2).place(x = 150, y = 4) 
    but=Button(text="Save",command=enter).place(x = 70, y = 10)

clienti = Button(text = "New", command=test).place(x = 30, y = 60)
window.mainloop()

Upvotes: 1

Views: 136

Answers (1)

scotty3785
scotty3785

Reputation: 7006

As I mentioned in the comments, you shouldn't use more than one instance of Tk(). You should use Toplevel for new dialogs.

For example

import os
from tkinter import *
##CONFIG FRS TK
import tkinter as tk
window = Tk()
window.geometry("600x500")
window.title("Gestione caldaie")
window.config(bg="gray")

name2=StringVar()
def enter():
    print(name2.get())

def test():
    clienti_caldaie=Toplevel()
    clienti_caldaie.resizable(False,False)
    clienti_caldaie.geometry("800x550")
    clienti_caldaie.title("Clienti e Caldaie")
    clienti_caldaie.config(bg = "#9999ff")

    ##DATI UTENTE
    name = Label(clienti_caldaie, text = "Nome e Cognome ", font = "bold", bg = "#9999ff").place(x = 0, y = 3)

    named = Entry(clienti_caldaie,textvariable=name2).place(x = 150, y = 4) 
    but=Button(clienti_caldaie,text="Save",command=enter).place(x = 70, y = 10)

clienti = Button(text = "New", command=test).place(x = 30, y = 60)
window.mainloop()

Upvotes: 1

Related Questions