PYTHON (tkinter) Создание инкрементального значения в записи - PullRequest
2 голосов
/ 05 мая 2020

Я пытаюсь создать программу, которая позволяет пользователю либо увеличивать значение, либо вводить его самостоятельно в запись в системе, которая выглядит примерно так: The Basi c Gui И это мой код

from tkinter import *
ACGui = Tk()

class GUI:
    def __init__(self, start, stop, delay, buttons):
        new_delay = delay
        self.start_button = start
        self.stop_button = stop
        self.delay = StringVar()
        self.new_delay = StringVar()
        self.delay.set(delay)
        self.new_delay.set(new_delay)
        self.buttons = buttons

    def delay_increment(self, op, num):
        print(self.delay.get())
        print(op)
        print(num)

    def create_gui(self):
        Label(ACGui, text="Auto Clicker").grid(row=0, column=0)

        Button(ACGui, text="+1", command=lambda: self.delay_increment("add", 1)).grid(row=1, column=1)

        Label(ACGui, text="Delay: ").grid(row=2, column=0)
        Entry(ACGui, text=self.delay, textvariable=self.new_delay, justify="center").grid(row=2, column=1)
        Button(ACGui, text="Submit", command=self.delay.set(self.new_delay)).grid(row=2, column=5)

        Button(ACGui, text="-1", command=lambda: self.delay_increment("sub", 1)).grid(row=3, column=1)

        ACGui.mainloop()

main = GUI(1, 1, 2, 1)
main.create_gui()

Проблема, с которой я столкнулся, заключается в том, что self.delay.get() возвращает PY_VAR1 ИЛИ PY_VAR0

Я действительно застрял в том, что делать здесь, может ли кто-нибудь помочь меня?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Проблема в том, что вы не используете лямбда-выражение в этой строке.

 Button(ACGui, text="Submit", command=self.delay.set(self.new_delay)).grid(row=2, column=5)

Он автоматически выполняет self.delay.set при запуске вашей программы. Попробуйте

 Button(ACGui, text="Submit", command=lambda:self.delay.set(self.new_delay)).grid(row=2, column=5)
0 голосов
/ 05 мая 2020

Хорошо, я не знаю, что произошло, но я удалил кнопку отправки в строке под записью, и теперь она работает.

...