[英]Im trying to use another python file inside a different one and my function isnt passing numbers
File 1:文件 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()
File 2:文件 2:
import random
def generate_number(min_number, max_number):
random_number = random.randint(min_number,max_number)
This is my error Exception has occurred: TclError wrong # coordinates: expected 0 or 4, got 2 File "main.py", line 9, in canvas.create_rectangle(rng.generate_number(-10, 10), rng.generate_number(-10, 10), 200, 200, fill='red')这是我的错误 发生异常:TclError 错误 # 坐标:预期 0 或 4,得到 2 文件“main.py”,第 9 行,在 canvas.create_rectangle(rng.generate_number(-10, 10), rng.generate_number(- 10, 10), 200, 200, 填充='红色')
wrong # coordinates: expected 0 or 4, got 2
means that create_rectangle()
didn't get the 2x2=4 numbers as coordinates. wrong # coordinates: expected 0 or 4, got 2
意味着create_rectangle()
没有将 2x2=4 数字作为坐标。
As @Delrius Euphoria points out, you forgot to actually return the random numbers from generate_number()
.正如@Delrius Euphoria 指出的那样,您实际上忘记了从
generate_number()
返回随机数。 By default, Python has this function return None
instead.默认情况下,Python 有这个 function 返回
None
代替。 tkinter.Canvas notices that its two first params are None
. tkinter.Canvas 注意到它的前两个参数是
None
。 So what you did was:所以你所做的是:
canvas.create_rectangle(None, None, 200, 200, fill="red")
:-) :-)
You will have the same problem when you put in one file - so it has nothing to do with importing.当您放入一个文件时,您将遇到同样的问题 - 所以它与导入无关。
You have to use return
in function generate_number()
您必须在 function
generate_number()
中使用return
def generate_number(min_number, max_number):
return random.randint(min_number,max_number)
and then you can get result from function and assign to variables然后您可以从 function 获得结果并分配给变量
x = rng.generate_number(-10, 10)
y = rng.generate_number(-10, 10)
canvas.create_rectangle(x, y, 200, 200, fill='red')
or use directly in other function或者直接在其他function中使用
canvas.create_rectangle(rng.generate_number(-10, 10), rng.generate_number(-10, 10), 200, 200, fill='red')
Minimal working code最少的工作代码
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()
PEP 8 -- Style Guide for Python Code PEP 8 -- Python 代码的样式指南
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.