[英]Im trying to use another python file inside a different one and my function isnt passing numbers
文件 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)
這是我的錯誤 發生異常: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
意味着create_rectangle()
沒有將 2x2=4 數字作為坐標。
正如@Delrius Euphoria 指出的那樣,您實際上忘記了從generate_number()
返回隨機數。 默認情況下,Python 有這個 function 返回None
代替。 tkinter.Canvas 注意到它的前兩個參數是None
。 所以你所做的是:
canvas.create_rectangle(None, None, 200, 200, fill="red")
:-)
當您放入一個文件時,您將遇到同樣的問題 - 所以它與導入無關。
您必須在 function generate_number()
中使用return
def generate_number(min_number, max_number):
return random.randint(min_number,max_number)
然后您可以從 function 獲得結果並分配給變量
x = rng.generate_number(-10, 10)
y = rng.generate_number(-10, 10)
canvas.create_rectangle(x, y, 200, 200, fill='red')
或者直接在其他function中使用
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.