Topic: problema con entry widget  (Letto 94 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline marcodalcanto

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
problema con entry widget
« il: Agosto 09, 2019, 18:21 »
Salve a tutti, (sono nuovo quindi pardon se faccio qualcosa di errato con le regole dei post), è da stamani che non riesco a risolvere questo problema.  Ho una concatenazione di finestre che si aprono a seconda di ciò che preme l'utente. Arrivato ad un certo punto si chiede l'immissione di una stringa  mediante un entry widget (la cui apertura è azionata mediante la pressione di un pulsante in precedenza, quindi l'apertura della nuova finestra è definita all'interno di una funzione e non nel main). Una volta inserito il messaggio nell'entry widget si vuole salvare un file rinominandolo con la stringa inserita dalll'utente. Questo è fatto premendo il pulsante Save che si trova nella stessa finestra dell'entry. A questo punto premendo Save si dovrebbe attivare la funzione che salva il file con il nome inserito dall'utente. Il problema arriva a questo punto che è come se il valore immesso dall'utente non venisse letto (ho inserito il .get() ). Gli esempi che ho visto nel maggiore dei casi hanno le definizione dell'entry nel main e il print in un'altra funzione. Nel mio caso l'entry non è definito nel main ma in una funzione.
Vi allegherò il codice se necessario, grazie in anticipo

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.655
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:problema con entry widget
« Risposta #1 il: Agosto 12, 2019, 00:28 »
Ciao, penso proprio che una minima parte del codice che riproduce il problema sia necessaria, sì.

Offline marcodalcanto

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:problema con entry widget
« Risposta #2 il: Agosto 12, 2019, 10:19 »

import tkinter as tk
from picamera import PiCamera
import os
import RPi.GPIO as GPIO
import time
window = tk.Tk()
window.geometry ("700x400")
window.title ("Welcome")
window.resizable(False,False)#the size of the window cannot be changed
window.configure(background="white") #set the colour of the window
rows=0
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #pin 11 as input pin and initially down
data=tk.StringVar()






while rows<50:   #the window is a 50*50 grid
    window.rowconfigure(rows,weight=1)
    window.columnconfigure(rows,weight=1)
    rows+=1
   


def cameraopen (): #open the camera (it works only if firstbutton is pressed)
    s=False
    while True:
        if GPIO.input(17)==GPIO.HIGH:
            os.system("fswebcam zio.jpg")
            s=True
            if s==True:
                txt="Photo acquired correctly"
                out=tk.Label(window,text=txt)
                out.grid(row=30,column=20)
                thirdbutton=tk.Button (window,text="RenamePhoto",font=("Helvetica",16),command=Rename) #creation of the first button
                thirdbutton.grid (row=32,column=20)
            break           
           
   
           
def saveph ():
    global data
    stringa=str(data.get())
   


def Rename ():
    global data
    window2= tk.Tk()
    window2.geometry ("500x300")
    window2.title ("Rename File")
    window2.resizable(False,False)#the size of the window cannot be changed
    rowss=0
    while rowss<50:   #the window is a 50*50 grid
        window2.rowconfigure(rowss,weight=1)
        window2.columnconfigure(rowss,weight=1)
        rowss+=1
    tes="Write here your filename"
    text_in=tk.Label(window2,text=tes)
    text_in.grid(row=30,column=20)
    text_new=tk.Entry(window2,textvariable=data)
    text_new.grid(row=30, column=22)
    buttonok=tk.Button (window2,text="Save",font=("Helvetica",16),command=saveph) #creation of the first button
    buttonok.grid (row=30,column=23)
   

   
   
   
   




   


def spectroscope (): #open the spectroscope software (in this case opened Mathematica (it works)
     
    try:
        os.system("mathematica %F") #open app as if it was executed from terminal

    except:
        print ("Error occured")
   
   

firstbutton=tk.Button (window,text="Camera Mode",font=("Helvetica",16),command=cameraopen) #creation of the first button
firstbutton.grid (row=25,column=18)


secondbutton=tk.Button (window,text="Spectroscope Mode",font=("Helvetica",16),command=spectroscope) #creation of the second button
secondbutton.grid(row=25, column=28)



window.mainloop ()




ecco il codice