簡體   English   中英

我試圖在另一個文件中使用另一個 python 文件,而我的 function 沒有傳遞數字

[英]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()

PEP 8 -- Python 代碼的樣式指南

暫無
暫無

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

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