Python 3.x 提取tkinter条目小部件字符串时出错

Python 3.x 提取tkinter条目小部件字符串时出错,python-3.x,tkinter,Python 3.x,Tkinter,我正在制作一个GUI来控制我创建的一个GPIO函数,这个函数只会让几盏灯闪烁。目前,它只是让两个LED同时闪烁,用户输入的延迟和用户输入的使用tkinter的输入控件的循环数。这就是我的问题所在,当我尝试从条目小部件中提取输入时,我得到一个“str”错误,这是有意义的,因为我假设条目是字符串数据类型,而我的blink函数必须查找整数数据类型?然而,如果我强制它是一个整数,我就会得到一个“invalid for literal int()base 10”错误提示。请帮忙 以下是我当前的脚本: 免责

我正在制作一个GUI来控制我创建的一个GPIO函数,这个函数只会让几盏灯闪烁。目前,它只是让两个LED同时闪烁,用户输入的延迟和用户输入的使用tkinter的输入控件的循环数。这就是我的问题所在,当我尝试从条目小部件中提取输入时,我得到一个“str”错误,这是有意义的,因为我假设条目是字符串数据类型,而我的blink函数必须查找整数数据类型?然而,如果我强制它是一个整数,我就会得到一个“invalid for literal int()base 10”错误提示。请帮忙

以下是我当前的脚本:

免责声明:可能存在一些语法错误。迪尔的防火墙不允许我连接到网络,所以我不得不再次键入所有这些内容

import tkinter as tk
root=tk.Tk()
root.title("LED Controller")
import sys
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(11,GPIO.OUT)

CycleLabel = tk.Label(root, text="Cycles", font="Verdana 12 bold")
CycleLabel.grid(row=1,column=1)
CycleInput = tk.Entry(root)
CycleInput.grid(row=1,column=2)
CycleInput.focus_set()
cycle=CycleInput.get()

SpeedLabel = tk.Label(root, text="Speed", font="Verdana 12 bold")
SpeedLabel.grid(row=1,column=1)
SpeedInput = tk.Entry(root)
SpeedInput.grid(row=2,column=2)
SpeedInput.focus_set()
speed = SpeedInput.get()

def callback():
    print (CycleInput.get())
    print (SpeedInput.get())

def Blink(cycle,speed):
    for platypus in range (0, cycle):           ** This is the line that the error always points to. 
        print("Loop" + str(platypus+1))
        GPIO.output(7,True)
        GPIO.output(11, True)
        time.sleep(speed)
        GPIO.output(7, False)
        GPIO.output(11, False)
        time.sleep(speed)
        print("Done")

ButtonFrame = tk.Frame(root)
ButtonFrame.grid(row=3,column=1,columnspan=3)

B2 = tk.Button(ButtonFrame, text="Start", width=10, command=lambda:Blink(cycle,speed), font="Verdana 10 bold")
B2.grid(row=3,column=2)

B1 = tk.Button(ButtonFrame, text"Print Inputs", width=10, command=callback, font="Verdana 10 bold")
B1.grid(row=3,column=1)

def clear():
    CycleInput.delete(0, 'end')
    SpeedInput.delete(0, 'end')

B3 = tk.Button(ButtonFrame, text="Clear", width=10, command=clear, font="Verdana 10 bold")
B3.grid(row=3,column=3)

CloseFrame = tk.Frame(root)
CloseFrame.grid(row=4, column=1, columnsapn=3)

B4 = tk.Button(CloseFrame, text="Close", width=20, command=root.destroy, font="Verdana 10 bold", activebackground='red')
B4.grid(row=4,column=2)
在创建相应的输入字段后,您的
循环
速度
变量恰好设置了一次。因此,它们总是空字符串;用户根本没有机会为它们输入值。单击按钮后,您需要执行
.get()
s操作-在这个lambda中,或者在
闪烁
本身中


您还需要将输入的字符串转换为整数,并处理输入的字符串不是有效整数的可能性。

您搜索过答案吗?你的问题没有任何研究的迹象。我建议您首先搜索
[tkinter]gpio
。在我写这篇文章的时候,有58个问题,其中一些可能与这个问题非常相似。我的问题甚至不涉及GPIO。感谢您的帮助!:)尝试了这个,但它给了我另一个未定义self的错误:self.y=tk.StringVar()SpeedInput=tk.Entry(root,textvariable=self.y)speed=int(self.y.get())Right
self
仅在使用类时适用,而您不是。
command=lambda:Blink(cycle,speed)