Tkinter: обновлять переменную - PullRequest
0 голосов
/ 20 июня 2020

Мне очень нужна помощь, у меня тает мозг из-за этой проблемы. Я изучал python в течение 2 месяцев, и я не очень разбираюсь в программировании. У меня проблема ... Я использую tkinter в этой программе; в этом маленьком GUI я хотел бы постоянно обновлять глобальную переменную «temp», и ее значение должно меняться каждый раз, когда я нажимаю на кнопку. Я знаю, что mainl oop () - это метод блокировки, поэтому можно сделать что-то вроде этого?

import tkinter as tk


class App:
def __init__(self):
    super().__init__()
    self.screen = tk.Tk()
    self.screen.geometry("400x400")
    self.screen.title("Modifica temperatura ambiente")
    self.screen.grid_columnconfigure(0, weight = 1)

    self.label = tk.Label(self.screen, text="ENTER TEMPERATUR VALUE", fg = "black", font = ("Calibri", 10) )
    self.label.grid(row = 0, column = 0, sticky = "N", pady = 10)

    self.input_ = tk.Entry(self.screen)
    self.input_.grid(row = 1, column = 0, sticky = "WE", pady = 5, padx = 20)

    self.button = tk.Button(self.screen, text = "INVIA", command = self.getvalue)
    self.button.grid(row = 2, column = 0, sticky = "WE", pady = 5, padx = 10)

def getvalue(self):
    self.temp = self.input_.get()
    temperatura_label = tk.Label(self.screen, text = "Last input value is " + self.temp + " degrees", fg = "red")
    temperatura_label.grid(row = 3, column = 0, sticky = "S")
    return self.temp

app = App()
temp = app.getvalue()
print(temp)
app.screen.mainloop()

Спасибо за помощь!

1 Ответ

0 голосов
/ 20 июня 2020

Если вы хотите распечатать его в терминале, измените свою getvalue функцию.

Код:

import tkinter as tk

screen = tk.Tk()
screen.geometry("400x400")
screen.title("Modifica temperatura ambiente")
screen.grid_columnconfigure(0, weight = 1)

class App:
    def __init__(self, master):
        super().__init__()
        self.master = master
        self.label = tk.Label(master, text="ENTER TEMPERATUR VALUE", fg = "black", font = ("Calibri", 10) )
        self.label.grid(row = 0, column = 0, sticky = "N", pady = 10)

        self.input_ = tk.Entry(master)
        self.input_.grid(row = 1, column = 0, sticky = "WE", pady = 5, padx = 20)


    def getvalue(self):
        self.temp = self.input_.get()
        temperatura_label = tk.Label(self.master, text = "Last input value is " + self.temp + " degrees", fg = "red")
        temperatura_label.grid(row = 3, column = 0, sticky = "S")
        if self.temp == None:
            print()
        else:
            return self.temp

app = App(screen)

def main_loop():
    global app
    temp = app.getvalue()
    print(temp)


button = tk.Button(screen, text = "INVIA", command = main_loop)
button.grid(row = 2, column = 0, sticky = "WE", pady = 5, padx = 10)



screen.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...