2013-07-17 3 views
2

Im은 파이썬 3.3에서 캔버스에서 임의로 움직이는 타원 (거품)이있는 "수학 거품"게임입니다.이 거품은 숫자 2를 가지며 사용자는 질문과 관련하여 거품을 팝업하거나 클릭해야합니다 예 2의 배수, 2,4,6,8 등의 거품을 사용자가 클릭합니다.python 타원형에 텍스트를 추가하는 방법은 무엇입니까?

문제는, 타원형 Ive에 숫자를 넣을 수있는 방법이 없거나 모르는 경우입니다. 도와주세요>. 지금까지 <

코드 :

수학 거품

from tkinter import * 
import random 


def quit(): 
    root.destroy() 


def bubble(): 
    xval = random.randint(5,765) 
    yval = random.randint(5,615) 
    canvas.create_oval(xval,yval,xval+30,yval+30, fill="#00ffff",outline="#00bfff",width=5) 
    canvas.update() 

def main(): 
    global root 
    global tkinter 
    global canvas 
    root = Tk() 
    root.title("Math Bubbles") 
    Button(root, text="Quit", width=8, command=quit).pack() 
    Button(root, text="Start", width=8, command=bubble).pack() 
    canvas = Canvas(root, width=800, height=650, bg = '#afeeee') 
    canvas.pack() 
    root.mainloop() 

main() 

답변

4

는 Tkinter를 캔버스에 텍스트를 넣어 create_text의 방법을 사용하십시오. 타원형 위에 놓으려면 타원의 중심이되도록 위치를 설정하십시오. 이 경우 각 타원의 중심은 (xval + 15, yval + 15)입니다. 아래를 참조

def bubble(): 
    xval = random.randint(5,765) 
    yval = random.randint(5,615) 
    canvas.create_oval(xval,yval,xval+30,yval+30, fill="#00ffff",outline="#00bfff",width=5) 
    canvas.create_text(xval+15,yval+15,text="mytext") 
    canvas.update() 

을 각각 지금 타원 그 안에 쓰여진 "으로 myText"를해야합니다 확인하십시오.

그러나 운동이 필요한 복잡한 응용 프로그램의 경우 애니메이션 소프트웨어를 조사하고 싶을 수 있습니다. 좋은 예가 파이 게임 (Pygame)과 라이브 와이어 (Livewires)입니다. 그러나 그것은 당신에게 달려 있습니다.

+0

단순히 타원을 화면에서 움직이면 Tkinter로 충분합니다. 또한 이벤트 루프가 입력되면 자동으로 발생하므로'update'를 호출 할 필요가 없습니다. 마지막으로 타원과 텍스트를 동일한 태그 안에 넣고 단일 단위로 이동할 수 있습니다. –

+0

@BryanOakley : 나의 목표는 OP를 자신의 코드를 완전히 리팩토링하는 것이 아니라 원하는대로 할 수있는 방법을 보여주기위한 것이 었습니다. 내가 시스템을 직접 만들었다면, 나는 클래스와 이것 저것을 사용했을 것이다. 또한 필자는 그가 계획하고있는 복잡성을 알지 못하기 때문에 파이 게임 등을 언급했습니다. 나는 그가 매우 정교한 게임을 만들려고한다면, tkinter가 너무 약해서 멋지게 게임을 할 수 없다고 말하려고했습니다. 그럼에도 불구하고, 당신은 아주 좋은 점을 만들고 나는 각각에 동의합니다. – iCodez

+0

@LilKasian : 천만에! 텍스트를 타원 위에 놓으려면 타원의 중심이되도록 위치를 설정하십시오. 타원이 움직이는 경우, 텍스트가 텍스트와 함께 움직이고 중앙의 맨 위에 머물러 있는지 확인하십시오. 또한, 내 대답이 문제를 적절하게 해결했다고 생각하면 받아 들여야합니다. 그렇지 않으면 질문에 "답이 없음"으로 남아 있기 때문에 사람들을 혼란스럽게 할 수 있습니다. 그러나 그것이 아니라면, 알려 주시기 바랍니다. 나는 더 기꺼이 도와 드리겠습니다. – iCodez

관련 문제