簡體   English   中英

轉換 Label 輸出(字符串、整數、浮點數)

[英]Converting Label outputs (string,int,float)

我對 python 比較陌生,我一直在嘗試用 turtle 和 tkinter 庫制作一個“軟件”,目標是繪制一個有 n 邊的多邊形,其中 n 是 label 中的輸入輸入。還有一個簡單的按鈕基本上啟動了整個過程。 我已經到了需要將 u 定義為角度的地步,而 u=360/n;但是我不斷收到此錯誤:

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

我試過將 label 的 output 轉換為 float 或 int 類型的信息,但我似乎不太明白。 我應該如何從條目中轉換 output? 非常感謝任何幫助,我希望閱讀這篇文章的任何人今天愉快 rest。 這是到目前為止的代碼:

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()

您在使用 tkinter 時遇到一些問題,我建議您先嘗試遵循一些指南

對於您的代碼,試試這個:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM