【问题标题】:integer argument expected error tkinter python 3.4整数参数预期错误 tkinter python 3.4
【发布时间】:2017-07-05 21:43:30
【问题描述】:

我目前正在尝试帮助一位朋友完成我之前完成的相同任务,但我卡住了。一旦程序运行并按下“获取票证”,就会显示此错误消息:

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次): 调用中的文件“C:\Python34\lib\tkinter__init__.py”,第 1533 行 返回 self.func(*args) reg_output 中的文件“C:\Users\harding\Documents\Oli\Homework\Year10\Computing\New folder\carpark 3.4 (1).py”,第 21 行 b.readlines(v.get()) 类型错误:需要整数参数,得到 'str'

代码:

    from tkinter import *
    import time

    root = Tk()
    root.title('Car Park')

    v = StringVar()

   car_in=Label(root, text= "Please enter your reg number")
   car_in.grid(column=1, row=1)

   reg_input=Entry(root, textvariable =v)
   reg_input.grid(column=1, row=2)

   def reg_input():
     with open ('tickets.txt', 'w') as b:
        b.writelines(v.get())

   def reg_output():
     with open ('tickets.txt', 'r') as b:
        b.readlines(v.get())

   reg_input_but=Button(root, text='Submit', command=reg_input)
   reg_input_but.grid(column=1, row=4)

   reg_output_b=Button(root, text='Get Ticket', command=reg_output)
   reg_output_b.grid(column=1, row=5)

【问题讨论】:

    标签: tkinter python-3.4


    【解决方案1】:

    v 是一个 Stringvar,因此 v.get() 返回一个字符串。 b.readlines(lines) 要求行是整数,因为行决定了应该读取多少行。如果您省略参数,它将读取所有行。

    【讨论】:

      【解决方案2】:

      查看错误,函数readlines 需要整数参数,而v.get() 返回一个字符串,导致错误。您只需将第 21 行的 b.readlines(v.get()) 更改为 b.readlines() 即可修复错误。

      这是编辑后的代码。

      from tkinter import *
      import time
      
      root = Tk()
      root.title('Car Park')
      
      v = StringVar()
      
      car_in=Label(root, text= "Please enter your reg number")
      car_in.grid(column=1, row=1)
      
      reg_input=Entry(root, textvariable =v)
      reg_input.grid(column=1, row=2)
      
      def reg_input():
          with open ('tickets.txt', 'w') as b:
              b.writelines(v.get())
      
      def reg_output():
          with open ('tickets.txt', 'r') as b:
              b.readlines()
      
      reg_input_but=Button(root, text='Submit', command=reg_input)
      reg_input_but.grid(column=1, row=4)
      
      reg_output_b=Button(root, text='Get Ticket', command=reg_output)
      reg_output_b.grid(column=1, row=5)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2019-08-28
        • 1970-01-01
        相关资源
        最近更新 更多