Python обновить ввод пользователя кнопкой tkinter - PullRequest
0 голосов
/ 14 января 2020

Я только начинаю с python, и у меня проблема. Я пробовал разные решения, но не могу обновить поле с надписью «19». Когда я нажимаю на плюс, я хочу, чтобы это было 20, затем 21, ... и когда я нажимаю - это должно go вернуться к 20, 19. Кто-нибудь может сказать мне, как решить эту проблему?

 from tkinter import *

    def fct_tempplus():
        while True:
            #  tekstvak_input_user = tekstvak_input_user +1
            return tekstvak_input_user + 1

    def fct_tempmin():
        print ('ok')


    window = Tk()
    window.geometry("800x400")  # not *
    window.title("TEST")

    label= Label( window, text = "Temp?")
    label.place(x=350,y=175)


    tempplus=Button(window, bd=10,width=10, height = 1,text="+",command=fct_tempplus,
font=("Helvetica", 12))
    tempplus.place(x=500,y=150)


    tempmin=Button(window, bd=10,width=10, height = 1,text="-", font=("Helvetica", 12),command=fct_tempmin)
    tempmin.place(x=500,y=200)


    tekstvak_input_user = Entry(window, width = 10 )
    tekstvak_input_user.insert(0,19.0)
    tekstvak_input_user.place(x=350 , y=200)



    window.mainloop()`

1 Ответ

0 голосов
/ 15 января 2020

while True не требуется в этой программе. И вы должны использовать .get(), чтобы получить значение внутри функции. А затем вы должны сохранить его в глобализированной переменной, преобразовать в int или float. Затем просто используйте delete(0, END), чтобы очистить содержимое внутри виджета Entry, а затем используйте insert(), чтобы вставить новое значение в Entry.

Как это:

from tkinter import *

var = 0


def fct_temp_plus():
    global var
    var = float(tekstvak_input_user.get())
    var += 1
    tekstvak_input_user.delete(0, END)
    tekstvak_input_user.insert(0, var)


def fct_temp_min():
    global var
    var = float(tekstvak_input_user.get())
    var -= 1
    tekstvak_input_user.delete(0, END)
    tekstvak_input_user.insert(0, var)


window = Tk()
window.geometry("800x400")  # not *
window.title("TEST")

label = Label(window, text="Temp?")
label.place(x=350, y=175)


temp_plus = Button(window, bd=10, width=10, height=1, text="+", command=fct_temp_plus, font=("Helvetica", 12))
temp_plus.place(x=500, y=150)


temp_min = Button(window, bd=10, width=10, height=1, text="-", font=("Helvetica", 12), command=fct_temp_min)
temp_min.place(x=500, y=200)

tekstvak_input_user = Entry(window, width=10)
tekstvak_input_user.insert(0, 19.0)
tekstvak_input_user.place(x=350, y=200)

window.mainloop()

Примечание: Вы должны всегда import tkinter as tk.

Как это:

import tkinter as tk

var = 0


def fct_temp_plus():
    global var
    var = float(tekstvak_input_user.get())
    var += 1
    tekstvak_input_user.delete(0, tk.END)
    tekstvak_input_user.insert(0, var)


def fct_temp_min():
    global var
    var = float(tekstvak_input_user.get())
    var -= 1
    tekstvak_input_user.delete(0, tk.END)
    tekstvak_input_user.insert(0, var)


window = tk.Tk()
window.geometry("800x400")
window.title("TEST")

label = tk.Label(window, text="Temp?")
label.place(x=350, y=175)

temp_plus = tk.Button(window, bd=10, width=10, height=1, text="+", command=fct_temp_plus, font=("Helvetica", 12))
temp_plus.place(x=500, y=150)

temp_min = tk.Button(window, bd=10, width=10, height=1, text="-", font=("Helvetica", 12), command=fct_temp_min)
temp_min.place(x=500, y=200)

tekstvak_input_user = tk.Entry(window, width=10)
tekstvak_input_user.insert(0, 19.0)
tekstvak_input_user.place(x=350, y=200)

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