首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试图在另一个文件中使用另一个python文件,而我的函数并没有传递数字

我试图在另一个文件中使用另一个python文件,而我的函数并没有传递数字
EN

Stack Overflow用户
提问于 2022-08-02 18:02:33
回答 2查看 33关注 0票数 0

档案1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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')

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-03 15:34:35

当您输入一个文件时,您将遇到同样的问题--因此它与导入无关。

您必须在函数return中使用generate_number()

代码语言:javascript
复制
def generate_number(min_number, max_number):
    return random.randint(min_number,max_number)

然后,您可以从函数中获得结果并将其赋值给变量。

代码语言:javascript
复制
x = rng.generate_number(-10, 10)
y = rng.generate_number(-10, 10)
canvas.create_rectangle(x, y, 200, 200, fill='red')

或直接用于其他功能

代码语言:javascript
复制
canvas.create_rectangle(rng.generate_number(-10, 10), rng.generate_number(-10, 10), 200, 200, fill='red')

最小工作码

代码语言:javascript
复制
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 -- Python代码样式指南

票数 0
EN

Stack Overflow用户

发布于 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。所以你做的是:

代码语言:javascript
复制
canvas.create_rectangle(None, None, 200, 200, fill="red")

:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73211828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档