Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
随机字母键入测试中的Python Tkinter属性错误条目 回溯(最近一次呼叫最后一次): 文件“C:/Users/Brett/Documents/shellrunpractice”,第83行,在 app=simpleapp_tk(无) 文件“C:/Users/Brett/Documents/shellrunpractice”,第9行,在__ self.initialize() 文件“C:/Users/Brett/Documents/shellrunpractice”,第22行,在初始化中 command=self.usertypetest(0),fg=“黑色”,bg=“绿色”) usertypetest中第66行的文件“C:/Users/Brett/Documents/shellrunpractice” self.keeptime(num1) 文件“C:/Users/Brett/Documents/shellrunpractice”,第44行,在keeptime中 self.entry.selection_范围(0,Tkinter.END) 文件“C:\Python27\lib\lib-tk\Tkinter.py”,第1845行,在uu getattr中__ 返回getattr(self.tk,attr) AttributeError:条目_Python_User Interface_Attributes_Tkinter_Attributeerror - Fatal编程技术网

随机字母键入测试中的Python Tkinter属性错误条目 回溯(最近一次呼叫最后一次): 文件“C:/Users/Brett/Documents/shellrunpractice”,第83行,在 app=simpleapp_tk(无) 文件“C:/Users/Brett/Documents/shellrunpractice”,第9行,在__ self.initialize() 文件“C:/Users/Brett/Documents/shellrunpractice”,第22行,在初始化中 command=self.usertypetest(0),fg=“黑色”,bg=“绿色”) usertypetest中第66行的文件“C:/Users/Brett/Documents/shellrunpractice” self.keeptime(num1) 文件“C:/Users/Brett/Documents/shellrunpractice”,第44行,在keeptime中 self.entry.selection_范围(0,Tkinter.END) 文件“C:\Python27\lib\lib-tk\Tkinter.py”,第1845行,在uu getattr中__ 返回getattr(self.tk,attr) AttributeError:条目

随机字母键入测试中的Python Tkinter属性错误条目 回溯(最近一次呼叫最后一次): 文件“C:/Users/Brett/Documents/shellrunpractice”,第83行,在 app=simpleapp_tk(无) 文件“C:/Users/Brett/Documents/shellrunpractice”,第9行,在__ self.initialize() 文件“C:/Users/Brett/Documents/shellrunpractice”,第22行,在初始化中 command=self.usertypetest(0),fg=“黑色”,bg=“绿色”) usertypetest中第66行的文件“C:/Users/Brett/Documents/shellrunpractice” self.keeptime(num1) 文件“C:/Users/Brett/Documents/shellrunpractice”,第44行,在keeptime中 self.entry.selection_范围(0,Tkinter.END) 文件“C:\Python27\lib\lib-tk\Tkinter.py”,第1845行,在uu getattr中__ 返回getattr(self.tk,attr) AttributeError:条目,python,user-interface,attributes,tkinter,attributeerror,Python,User Interface,Attributes,Tkinter,Attributeerror,代码如下: Traceback (most recent call last): File "C:/Users/Brett/Documents/shellrunpractice", line 83, in <module> app = simpleapp_tk(None) File "C:/Users/Brett/Documents/shellrunpractice", line 9, in __init__ self.initialize() File

代码如下:

Traceback (most recent call last):
  File "C:/Users/Brett/Documents/shellrunpractice", line 83, in <module>
    app = simpleapp_tk(None)
  File "C:/Users/Brett/Documents/shellrunpractice", line 9, in __init__
    self.initialize()
  File "C:/Users/Brett/Documents/shellrunpractice", line 22, in initialize
    command=self.usertypetest(0),fg="black",bg="green")
  File "C:/Users/Brett/Documents/shellrunpractice", line 66, in usertypetest
    self.keeptime(num1)
  File "C:/Users/Brett/Documents/shellrunpractice", line 44, in keeptime
    self.entry.selection_range(0, Tkinter.END)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1845, in __getattr__
    return getattr(self.tk, attr)
AttributeError: entry
导入Tkinter
随机输入
从时间上导入睡眠
类simpleapp_tk(Tkinter.tk):
定义初始化(自身,父级):
Tkinter.Tk.\uuuuu init\uuuuuu(自,父)
self.parent=parent
self.initialize()
def初始化(自):
self.grid()
self.labelVariable=Tkinter.StringVar()
label=Tkinter.label(self,textvariable=self.labelVariable,anchor=“w”,fg=“blue”,bg=“gold”)
label.grid(column=0,row=0,sticky='EW')
self.labelVariable.set(u“按按钮开始!”)
self.button=Tkinter.button(self,text=u“开始”,
command=self.usertypetest(0),fg=“黑色”,bg=“绿色”)
self.button.grid(列=2,行=0)
self.labelVariable2=Tkinter.StringVar()
label2=Tkinter.Label(self,textvariable=self.labelVariable2,anchor=“w”,fg=“blue”,bg=“gold”)
label2.grid(列=1,行=0,粘性=EW')
self.labelVariable2.set(u'Time')
self.entryVariable=Tkinter.StringVar()
self.entry=Tkinter.entry(self,textvariable=self.entryVariable,fg=“黑色”,bg=“白色”)
self.entry.grid(column=0,row=1,columnspan=2,sticky='EW')
self.entryVariable.set(u“”)
self.grid\u column配置(0,权重=1)
self.grid_rowconfigure(0,权重=1)
自我调整大小(真,真)
def keeptime(self,num1):
self.entry.selection_范围(0,Tkinter.END)
定时器=num1
t=0
当定时器<1时:
自标定变量2.集(t)
睡眠(.01)
t+=0.01
def用户类型(自身):
randletter=random.choice('qwer')
self.labelVariable.set(“按”+randletter)
userinput=self.entryVariable.get
当userinput=''时:
通过
如果userinput==randletter:
返回“正确”
其他:
返回“不正确”
def用户类型测试(自我,num1):
self.keeptime(num1)
对于范围(20)内的x:
结果=用户类型()
打印结果
如果结果=='Correct':
y=y+5
其他:
y=y-2
计时器+=1
self.labelVariable.set(str(y)+“是您的分数”)
如果名称=“\uuuuu main\uuuuuuuu”:
app=simpleapp_tk(无)
应用标题(“LoL实践”)
附录几何(“700x50”)
app.configure(background='black')
app.mainloop()
我不知道为什么我会遇到这个问题,因为我刚刚开始学习Tkinter,我还不是很好

该程序的目标是,当用户单击开始时,计时器将启动,打印到标签上,并显示从(Q、W、E、R)中随机选择的字母,用户必须尽快键入这些字母。程序会给他们计时,最后根据他们的错误给他们打分,并停止计时器

我想知道你们是否能在我的代码中找到可能导致这种情况的任何其他错误,如果是的话,如何做到这一点。我意识到我的代码非常糟糕,我才刚开始学习Tkinter,我还不完全确定所有东西是如何工作的


任何关于如何改进我的编码的一般性意见,以及关于如何编写一个程序来完成我想做的事情的任何意见,我都将不胜感激,因为我觉得我目前的方法不实用/不实用。

command=
只需要函数名,不需要
()
和参数

使用
command=self.usertypetest(0)
运行
self.usertypetest(0)

并将其结果分配给
命令=

但是
self.usertypetest(0)
使用尚未定义的
self.entry

self.entry
是在
Tkinter.Button(…command=self.usertypetest(0)…)之后定义的。

如果需要使用参数分配函数,则使用
lambda

import Tkinter
import random
from time import sleep

class simpleapp_tk(Tkinter.Tk):
    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.grid()


        self.labelVariable = Tkinter.StringVar()
        label = Tkinter.Label(self,textvariable=self.labelVariable,anchor="w",fg="blue",bg="gold")
        label.grid(column=0,row=0,sticky='EW')
        self.labelVariable.set(u"Press button to begin!")


        self.button = Tkinter.Button(self,text=u"Start",
                                command=self.usertypetest(0),fg="black",bg="green")
        self.button.grid(column=2,row=0)


        self.labelVariable2 = Tkinter.StringVar()
        label2 = Tkinter.Label(self,textvariable=self.labelVariable2,anchor="w",fg="blue",bg="gold")
        label2.grid(column=1,row=0,sticky='EW')
        self.labelVariable2.set(u'Time')


        self.entryVariable = Tkinter.StringVar()
        self.entry = Tkinter.Entry(self,textvariable=self.entryVariable,fg="black",bg="white")
        self.entry.grid(column=0,row=1,columnspan=2,sticky='EW')
        self.entryVariable.set(u"")


        self.grid_columnconfigure(0,weight=1)
        self.grid_rowconfigure(0,weight=1)
        self.resizable(True,True)


    def keeptime(self,num1):
        self.entry.selection_range(0, Tkinter.END)
        timer = num1
        t = 0
        while timer < 1:
            self.labelVariable2.set(t)
            sleep(.01)
            t += .01 



    def usertype(self):
        randletter = random.choice('qwer')
        self.labelVariable.set("Press "+randletter)
        userinput = self.entryVariable.get
        while userinput == '':
            pass
        if userinput == randletter:
            return 'Correct'    
        else:
            return 'Incorrect'

    def usertypetest(self,num1):
        self.keeptime(num1)
        for x in range(20):
            result = usertype()
            print result
            if result == 'Correct':
                y = y+5
            else:
                y = y-2
        timer += 1
        self.labelVariable.set(str(y)+' is your score')






if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.title('LoL Practice')
    app.geometry("700x50")
    app.configure(background='black')
    app.mainloop()
现在它开始工作了


编辑:

完整工作版本:

(我更改了一些变量名)

导入Tkinter
随机输入
类simpleapp_tk(Tkinter.tk):
定义初始化(自身,父级):
Tkinter.Tk.\uuuuu init\uuuuuu(自,父)
self.parent=parent
self.initialize()
self.started=False#计时器运行时为True
def初始化(自):
self.grid()
self.infoVariable=Tkinter.StringVar()
self.labelInfo=Tkinter.Label(self,textvariable=self.infoVariable,anchor=“w”,fg=“蓝色”,bg=“金色”)
self.labelInfo.grid(列=0,行=0,sticky='EW')
self.infoVariable.set(u“按按钮开始!”)
self.buttonStart=Tkinter.Button(self,text=u“Start”,command=self.on_buttonStart,fg=“黑色”,bg=“绿色”)
self.buttonStart.grid(列=2,行=0)
self.timeVariable=Tkinter.StringVar()
self.labelTime=Tkinter.Label(self,textvariable=self.timeVariable,anchor=“w”,fg=“蓝色”,bg=“金色”)
self.labelTime.grid(列=1,行=0,sticky='EW')
self.timeVariable.set(u'Time')
self.entryVariable=Tkinter.StringVar()
self.entry=Tkinter.entry(self,textvariable=self.entryVariable,fg=“黑色”,bg=“白色”)
self.entry.grid(column=0,row=1,columnspan=2,sticky='EW')
self.entryVariable.set(u“”)
自我介绍
command=lambda:self.usertypetest(0)
import Tkinter
import random

class simpleapp_tk(Tkinter.Tk):

    def __init__(self,parent):
        Tkinter.Tk.__init__(self,parent)
        self.parent = parent
        self.initialize()
        self.started = False # True when timer is running

    def initialize(self):
        self.grid()

        self.infoVariable = Tkinter.StringVar()
        self.labelInfo = Tkinter.Label(self, textvariable=self.infoVariable, anchor="w", fg="blue", bg="gold")
        self.labelInfo.grid(column=0, row=0, sticky='EW')
        self.infoVariable.set(u"Press button to begin!")

        self.buttonStart = Tkinter.Button(self, text=u"Start", command=self.on_buttonStart, fg="black", bg="green")
        self.buttonStart.grid(column=2, row=0)

        self.timeVariable = Tkinter.StringVar()
        self.labelTime = Tkinter.Label(self, textvariable=self.timeVariable, anchor="w", fg="blue", bg="gold")
        self.labelTime.grid(column=1, row=0, sticky='EW')
        self.timeVariable.set(u'Time')

        self.entryVariable = Tkinter.StringVar()
        self.entry = Tkinter.Entry(self, textvariable=self.entryVariable, fg="black", bg="white")
        self.entry.grid(column=0, row=1, columnspan=2, sticky='EW')
        self.entryVariable.set(u"")
        self.entry.bind('<Key>', self.on_key) # event

        self.grid_columnconfigure(0,weight=1)
        self.grid_rowconfigure(0,weight=1)
        self.resizable(True,True)


    def on_buttonStart(self):
        if not self.started:
            # reset values
            self.started = True
            self.number_of_letters = 20
            self.score = 0
            self.time = 0.0
            # select first letter
            self.randletter = random.choice('qwer')
            # show first letter and score
            self.infoVariable.set('Score:' + str(self.score)+' | Press ' + self.randletter)
            # start timer
            self.after(100, self.timer)

    def on_key(self, event):
        if not self.started:
            self.entryVariable.set('')
        else:
            if event.char == self.randletter:
                print 'Correct', event.char
                self.score += 5
            else:
                print 'Incorrect', event.char
                self.score -= 2

            self.number_of_letters -= 1

            if self.number_of_letters == 0:
                self.started = False
                self.entryVariable.set('')
                self.infoVariable.set('Score:' + str(self.score))
            else:
                self.randletter = random.choice('qwer')
                self.infoVariable.set('Score:' + str(self.score)+' | Press ' + self.randletter)

    def timer(self):
        if self.started:
            self.time += .1
            self.timeVariable.set('Time: ' + str(round(self.time,1)) )
            self.after(100, self.timer)


if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.title('LoL Practice')
    app.geometry("700x50")
    app.configure(background='black')
    app.mainloop()