档案1:
from tkinter import *
import randomnumgenerator as rng
root = Tk()
canvas = Canvas(root, width='300', height='300')
canvas.pack()
canvas.create_rectangle(rng.generate_number(-10, 10), rng.generate_number(-10, 10), 200, 200, fill='red')
root.mainloop()档案2:
import random
def generate_number(min_number, max_number):
random_number = random.randint(min_number,max_number)这是我的错误异常: canvas.create_rectangle(rng.generate_number(-10,10中的TclError错误#坐标:预期的0或4,获得2个文件"main.py",第9行,rng.generate_number(-10,10),200,200,fill='red')
发布于 2022-08-03 15:34:35
当您输入一个文件时,您将遇到同样的问题--因此它与导入无关。
您必须在函数return中使用generate_number()
def generate_number(min_number, max_number):
return random.randint(min_number,max_number)然后,您可以从函数中获得结果并将其赋值给变量。
x = rng.generate_number(-10, 10)
y = rng.generate_number(-10, 10)
canvas.create_rectangle(x, y, 200, 200, fill='red')或直接用于其他功能
canvas.create_rectangle(rng.generate_number(-10, 10), rng.generate_number(-10, 10), 200, 200, fill='red')最小工作码
import tkinter as tk # PEP8: `import *` is not preferred
import random
# --- functions ---
def generate_number(min_number, max_number):
return random.randint(min_number,max_number)
# --- main ---
root = tk.Tk()
canvas = tk.Canvas(root, width='300', height='300')
canvas.pack()
#x = generate_number(-10, 10)
#y = generate_number(-10, 10)
#canvas.create_rectangle(x, y, 200, 200, fill='red')
canvas.create_rectangle(generate_number(-10, 10), generate_number(-10, 10), 200, 200, fill='red')
root.mainloop()发布于 2022-08-02 20:11:50
wrong # coordinates: expected 0 or 4, got 2意味着create_rectangle()没有将2x2=4数字作为坐标。
正如@Delrius所指出的,您实际上忘记了从generate_number()返回随机数。默认情况下,Python让这个函数返回None。tkinter.Canvas注意到它的前两个参数是None。所以你做的是:
canvas.create_rectangle(None, None, 200, 200, fill="red"):-)
https://stackoverflow.com/questions/73211828
复制相似问题