![](/img/trans.png)
[英]How can I grab 2 things from 2 different def functions and use them in a different def
[英]How do I call the functions: def(dot) and def(dice) from def(main)?
我在從third(main)函數調用前兩個函數時遇到麻煩。 我相信我有正確的編碼(忽略大小和x,y坐標)來顯示di的五個面,但似乎無法弄清楚如何調用函數。
主要目的是展示di的五個面。
def dot(c,d):
#draw each dot
circDot1 = Circle(Point(50, 50), 5).setFill('black')
circDot1.draw(win)
circDot3 = Circle(Point(50, 100), 5).setFill('black')
circDot3.draw(win)
circDot5 = Circle(Point(100, 50), 5).setFill('black')
circDot5.draw(win)
circDot7 = Circle(Point(100, 100), 5).setFill('black')
circDot7.draw(win)
circDot4 = Circle(Point(75, 75), 5).setFill('black')
circDot4.draw(win)
def dice(a,b):
#build the dice
rectDice = Rectangle(Point(115, 115), Point(275,275))
rectDice.setFill('pink')
rectDice.setOutline('pink')
rectDice.draw(win)
def main():
# Create window, call dice function
win = GraphWin("Dice", 400, 400)
win.setBackground("cyan")
dice("a","b")
有幾個問題:
您無需執行main()
即可運行程序,但也許您不是僅在有問題的地方添加了此代碼。
win
是局部變量,函數無法訪問它們。 您應該在錯誤消息中看到它為NameError: name 'win' is not defined
在rectDice.draw(win)
中rectDice.draw(win)
NameError: name 'win' is not defined
。
Traceback (most recent call last):
File "<pyshell#2>", line 30, in <module>
main()
File "<pyshell#2>", line 28, in main
dice("a","b")
File "<pyshell#2>", line 21, in dice
rectDice.draw(win)
NameError: name 'win' is not defined
您可以添加win
作為參數
def dice(win, a, b):
#build the dice
rectDice = Rectangle(Point(115, 115), Point(275,275))
rectDice.setFill('pink')
rectDice.setOutline('pink')
rectDice.draw(win)
def main():
# Create window, call dice function
win = GraphWin("Dice", 400, 400)
win.setBackground("cyan")
dice(win, "a","b")
否則您必須將窗口分配給全局變量-在main()
使用global
def dice(a, b):
#build the dice
rectDice = Rectangle(Point(115, 115), Point(275,275))
rectDice.setFill('pink')
rectDice.setOutline('pink')
rectDice.draw(win)
def main():
global win
# Create window, call dice function
win = GraphWin("Dice", 400, 400)
win.setBackground("cyan")
dice("a", "b")
同樣的問題在dot()
在dot()
您還有其他問題。 您必須在下一行中使用setFill()
circDot1 = Circle(Point(50, 50), 5)
circDot1.setFill('black')
circDot1.draw(win)
完整代碼:
from graphics import *
def dot(win, c, d):
#draw each dot
circDot1 = Circle(Point(50, 50), 5)
circDot1.setFill('black')
circDot1.draw(win)
circDot3 = Circle(Point(50, 100), 5)
circDot3.setFill('black')
circDot3.draw(win)
circDot5 = Circle(Point(100, 50), 5)
circDot5.setFill('black')
circDot5.draw(win)
circDot7 = Circle(Point(100, 100), 5)
circDot7.setFill('black')
circDot7.draw(win)
circDot4 = Circle(Point(75, 75), 5)
circDot4.setFill('black')
circDot4.draw(win)
def dice(win, a, b):
#build the dice
rectDice = Rectangle(Point(115, 115), Point(275,275))
rectDice.setFill('pink')
rectDice.setOutline('pink')
rectDice.draw(win)
def main():
# Create window, call dice function
win = GraphWin("Dice", 400, 400)
win.setBackground("cyan")
dice(win, "a", "b")
dot(win, "c", "d")
main()
我認為您的main()函數甚至都沒有被調用。
嘗試使用此:
def main():
# Create window, call dice function
win = GraphWin("Dice", 400, 400)
win.setBackground("cyan")
dice("a","b")
if __name__== "__main__":
main()
參考: 此鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.