둥근 모서리가있는 사각형을 만들고 싶습니다. 저는 tkinter에서 캔버스를 사용하고 있습니다.둥근 모서리가있는 tkinter 캔버스 사각형을 만드는 방법은 무엇입니까?
답변
tobias의 방법에 대한 대체 접근 방식을 제공하는 것은 실제로 하나의 다각형으로 수행하는 것입니다.
최적화에 대해 걱정하거나 단일 객체를 참조하는 태그 시스템에 대해 걱정할 필요가없는 경우 하나의 캔버스 객체가 될 수 있다는 장점이 있습니다.
코드는 조금 더 길지만 매우 기본입니다. 폴리곤을 다듬을 때 똑같은 좌표를 두 번 주어서 발생하지 않도록 부드럽게 할 수 있다는 아이디어를 사용하고 있습니다. 당신은 당신이 사각형으로, 다음에 둥글게되어있는 '반경'을 지정합니다 일반 좌표를 제공 할 수있는이 기능을 사용
from tkinter import *
root = Tk()
canvas = Canvas(root)
canvas.pack()
def round_rectangle(x1, y1, x2, y2, radius=25, **kwargs):
points = [x1+radius, y1,
x1+radius, y1,
x2-radius, y1,
x2-radius, y1,
x2, y1,
x2, y1+radius,
x2, y1+radius,
x2, y2-radius,
x2, y2-radius,
x2, y2,
x2-radius, y2,
x2-radius, y2,
x1+radius, y2,
x1+radius, y2,
x1, y2,
x1, y2-radius,
x1, y2-radius,
x1, y1+radius,
x1, y1+radius,
x1, y1]
return canvas.create_polygon(points, **kwargs, smooth=True)
my_rectangle = round_rectangle(50, 50, 150, 100, radius=20, fill="blue")
root.mainloop()
:
이
는 무엇을 할 수 있는지의 예입니다 구석.**kwargs
을 사용하면 일반적으로
create_
메소드에서와 마찬가지로
fill="blue"
과 같은 키워드 인수를 전달할 수 있습니다.
좌표가 복잡해 보이지만 '사각형'의 각 점으로 체계적으로 돌아가며 각 비 코너 점을 두 번 나타냅니다.
코드의 길이가 길어도 상관 없으면 모든 좌표를 한 줄에 배치하여 함수를 2 줄 (!)으로 만들 수 있습니다.
def round_rectangle(x1, y1, x2, y2, r=25, **kwargs):
points = (x1+r, y1, x1+r, y1, x2-r, y1, x2-r, y1, x2, y1, x2, y1+r, x2, y1+r, x2, y2-r, x2, y2-r, x2, y2, x2-r, y2, x2-r, y2, x1+r, y2, x1+r, y2, x1, y2, x1, y2-r, x1, y2-r, x1, y1+r, x1, y1+r, x1, y1)
return canvas.create_polygon(points, **kwargs, smooth=True)
이이 (마음이 하나 캔버스 객체를 주) 다음을 생성합니다 :처럼이 보인다
기본 제공 방법이없는 것 같습니다. 가장 가까운 것은 폴리선이 smooth=1
인데도 여전히 오래된 TV 화면처럼 보입니다. 측면이 약간 구부러져 있습니다.
대신, 선과 호에서 둥근 사각형을 결합 도우미 함수를 정의 할 수 있습니다 :
는def rounded_rect(canvas, x, y, w, h, c):
canvas.create_arc(x, y, x+2*c, y+2*c, start= 90, extent=90, style="arc")
canvas.create_arc(x+w-2*c, y+h-2*c, x+w, y+h, start=270, extent=90, style="arc")
canvas.create_arc(x+w-2*c, y, x+w, y+2*c, start= 0, extent=90, style="arc")
canvas.create_arc(x, y+h-2*c, x+2*c, y+h, start=180, extent=90, style="arc")
canvas.create_line(x+c, y, x+w-c, y )
canvas.create_line(x+c, y+h, x+w-c, y+h )
canvas.create_line(x, y+c, x, y+h-c)
canvas.create_line(x+w, y+c, x+w, y+h-c)
예 :
import tkinter
root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.pack()
rounded_rect(canvas, 20, 20, 60, 40, 10)
root.mainloop()
는 또한 다른 **options
매개 변수를 제공 할 수 개별 부품의 선 너비, 색상 등을 설정하는 것이지만이 문제는 예를 들어 선 및 호는 선 색상에 대해 다른 매개 변수를 사용합니다 (각각 fill
및 outline
). 또한 채워진 둥근 사각형을 원한다면 여러 사각형을 사용하여 두 번째 방법으로 지정해야합니다.
- 1. 둥근 모서리가있는 FabricJS 캔버스
- 2. HTML5 둥근 모서리가있는 캔버스
- 3. Firemonkey : 둥근 모서리가있는 TRectangles를 만드는 방법은 무엇입니까?
- 4. 사각형을 사용하는 둥근 모서리가있는 UIButton setBackgroundImage
- 5. tkinter 캔버스 create_arc 둥근 모서리를 긋는 방법
- 6. 둥근 모서리가있는 버튼 만들기
- 7. Winform C#에서 둥근 모서리/모서리가있는 단추를 만드는 방법은 무엇입니까?
- 8. 둥근 모서리가있는 MFC에서 진행률 컨트롤을 만드는 방법은 무엇입니까?
- 9. 둥근 모서리가있는 ImageView 만들기
- 10. 둥근 모서리가있는 삼각형 만들기
- 11. 둥근 모서리가있는 Div 경계
- 12. 테두리없이 모서리가 둥근 모서리가있는 이미지를 만드는 방법
- 13. 사각형을 클릭했을 때 파이썬 tkinter 캔버스
- 14. 둥근 모서리가있는 AppWidget 이미지
- 15. 둥근 모서리가있는 NSTableView
- 16. 특이한 둥근 모서리가있는 메뉴
- 17. 둥근 모서리가있는 ImageView를 만드시겠습니까?
- 18. 둥근 모서리가있는 단추
- 19. 둥근 모서리가있는 WPF MediaElement
- 20. 둥근 모서리가있는 UIImageView 정보
- 21. 둥근 모서리가있는 빈 버튼
- 22. 둥근 모서리가있는 jCarouselLite 컨테이너
- 23. 둥근 모서리가있는 양식 만들기
- 24. CSS의 둥근 모서리가있는 문제
- 25. 둥근 모서리가있는 CCLayer
- 26. 둥근 모서리가있는 Openlayer 맵
- 27. 둥근 모서리가있는 UIAppearance BarButtonItem
- 28. 둥근 모서리가있는 경계선이없는 NSWindow
- 29. 둥근 모서리가있는 UIView?
- 30. 둥근 모서리가있는 Spritekit 선
내가이 너무 좋아 보인다 놀랍군요. 내가 똑같은 것을 시도했을 때, 내가 낡은 TV처럼 말했다. 그러나 나는 20 점이 아닌 12 점만을 사용하고있었습니다. +1 IMHO는 명시 적으로 'x1, y1, x2, y2'또는 'x, y, w, h'매개 변수를 사용하는 것이 좋습니다. –
@tobias_k 나는이 방법의 트릭이 각면에 포인트를주고 있다고 생각한다. 또한 나는 'x1, y1, x2, y2' 제안에 대해 동의합니다. – SneakyTurtle