Сброс строковых данных после сбора значения - PullRequest
1 голос
/ 21 июня 2019

Я пытаюсь сохранить файл снимка экрана с именем, которое вводит пользователь, но когда он достигает команды сохранения снимка экрана, он сбрасывается до первого значения, установленного при инициализации программы.

Я установилнекоторые функции печати для отладки программы, однако я обнаружил, что только сбрасывает переменную, но не уверен, почему, я сделал компоновку, которая работает, но я уверен, что это не лучший способ сделать это.

import pyautogui
import time
from tkinter import *
Serial = "String"
im1 = pyautogui.screenshot

window = Tk() 
window.title("Escanea número de serie")

window.geometry('300x40')
lbl = Label(window, text="Motor:",font=("Arial Bold", 20))
lbl.grid(column=0, row=0)
TextBox1 = Entry(window,width=12)
TextBox1.grid(column=1, row=0)
def clicked():
    Serial = str(TextBox1.get())
    print (Serial) #Until value is the one set by the user
    window.destroy()
    time.sleep(2)
    #im2 = pyautogui.screenshot(Serial + ".png") | Here it works
    #Agregar que hace click
btn = Button(window, text="Guardar",bg="orange", fg="black",command=clicked)    
btn.grid(column=2, row=0)
window.mainloop()
print (Serial) #Here it gets reset to "String" value
im2 = pyautogui.screenshot(Serial + ".png") #Here won't work

Необходимо сохранить ценность для будущих программ.Будем благодарны за любую помощь, спасибо.

Программа запросит у пользователя данные:
enter image description here

Если пользователь нажмет кнопку, он должен начать сохранение файла скриншота свведенное значение, однако оно сохраняет его с именем «String».

Результат:
enter image description here

1 Ответ

2 голосов
/ 21 июня 2019

Чтобы решить вашу проблему, вам нужно добавить одну строку в вашей функции clicked, чтобы использовать глобальную переменную Serial, а не создавать локальную переменную Serial в этой функции.

def clicked():
    global Serial
    Serial = str(TextBox1.get())
    print (Serial) #Until value is the one set by the user
    window.destroy()
    time.sleep(2)
...