【问题标题】:Converting Label outputs (string,int,float)转换标签输出(字符串、整数、浮点数)
【发布时间】:2020-09-22 07:05:41
【问题描述】:

我对 python 比较陌生,我一直在尝试使用turtle 和 tkinter 库制作一个“软件”,其目标是绘制一个具有 n 边的多边形,其中 n 是标签中的条目输入。还有一个简单的按钮,基本上可以启动整个过程。我已经到了需要将 u 定义为角度的地步,而 u=360/n;但是我不断收到此错误:

invalid literal for int() with base 10: '' 或者 unsupported operand type(s) for /: 'int' and 'StringVar

我已经尝试将标签的输出转换为浮点或整数类型的信息,但我似乎不太明白。我应该如何继续转换条目的输出?非常感谢任何帮助,我希望任何阅读本文的人都能度过愉快的一天。 到目前为止的代码如下:

import turtle
import random
#################
canv=tkinter.Canvas(width=400,height=400)
canv.pack()
#################
tcanv=turtle.TurtleScreen(canv)
t=turtle.RawTurtle(tcanv)


n=tkinter.StringVar()
label=tkinter.Label(text="Sides?")
label.pack()
entry=tkinter.Entry(textvariable="n")
entry.pack()


u=(360/n) if n != 0 else 0

def draw():
    for i in range (n):
        t.fd(50)
        t.left(u)

btn=tkinter.Button (text="Draw",fg="black",command=Draw)
btn.pack()
label.mainloop()
entry.mainloop()
btn.mainloop()

【问题讨论】:

  • 它应该是一个变量,比如textvariable=n,并且最初n 是空的,这意味着它是'',所以你需要给它一些时间来输入。所以把它放在一个函数中或者稍微延迟一下,直到你输入输入
  • 请问最简单的延迟方法是什么?我首先想到的是time.sleep(),但是我似乎无法找到一种方法来实现它,因为我不知道我应该延迟多久,我不知道如何延迟某些事情直到发生你知道我的意思。
  • time.sleep() 将冻结 GUI,使用 after() 方法

标签: python tkinter


【解决方案1】:

您在使用 tkinter 时遇到一些问题,建议您先尝试关注some guide

对于您的代码,试试这个:

import turtle
import tkinter as tk

def draw():
    n = int(entry.get())
    u = (360 / n) if n != 0 else 0
    for i in range(n):
        t.fd(50)
        t.left(u)


if __name__ == '__main__':
    root = tk.Tk()

    canv = tk.Canvas(root, width=400, height=400)
    canv.pack()

    tcanv = turtle.TurtleScreen(canv)
    t = turtle.RawTurtle(tcanv)

    label = tk.Label(root, text="Sides?")
    label.pack()

    entry = tk.Entry(root)
    entry.pack()

    btn = tk.Button(text="Draw", fg="black", command=draw)
    btn.pack()

    root.mainloop()

(仅重新排序您的代码并更改字符串 var)

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2016-05-02
    • 2014-04-29
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多