2 개의 Tkinter 프로그램을 함께 넣으려고합니다. 하나는 사용자가 입력 한 URL에서 각 문자의 모든 항목을 가져오고 텍스트 상자에 각 문자의 개수를 표시합니다. 다른 하나는 히스토그램을 생성하는 turtle
모듈입니다. 각 문자의 어커런스를 히스토그램으로 표시하고 X 축에 문자 레이블을 표시하고 싶습니다. def main():
에서 시작tkinter 프레임에 히스토그램 삽입
from tkinter import *
import tkinter.messagebox
import urllib.request
import turtle
counts = 0
def main():
analyzeFile(url.get())
list = [counts]
drawHistogram(list)
def analyzeFile(url):
try:
infile = urllib.request.urlopen(url)
s = str(infile.read().decode()) # Read the content as string from the URL
counts = countLetters(s.lower())
infile.close() # Close file
except ValueError:
tkinter.messagebox.showwarning("Analyze URL",
"URL " + url + " does not exist")
def countLetters(s):
counts = 26 * [0] # Create and initialize counts
for ch in s:
if ch.isalpha():
counts[ord(ch) - ord('a')] += 1
return counts
def drawHistogram(list):
WIDTH = 400
HEIGHT = 300
raw_turtle.penup()
raw_turtle.goto(-WIDTH/2, -HEIGHT/2)
raw_turtle.pendown()
raw_turtle.forward(WIDTH)
widthOfBar = WIDTH/len(list)
for i in range(len(list)):
height = list[i] * HEIGHT/max(list)
drawABar(-WIDTH/2 + i * widthOfBar,
-HEIGHT/2, widthOfBar, height)
raw_turtle.hideturtle()
def drawABar(i, j, widthOfBar, height):
raw_turtle.penup()
raw_turtle.goto(i, j)
raw_turtle.setheading(90)
raw_turtle.pendown()
raw_turtle.forward(height)
raw_turtle.right(90)
raw_turtle.forward(widthOfBar)
raw_turtle.right(90)
raw_turtle.forward(height)
window = Tk()
window.title("Occurrence of Letters in a Histogram from URL")
frame1 = Frame(window)
frame1.pack()
scrollbar = Scrollbar(frame1)
scrollbar.pack(side = RIGHT, fill = Y)
canvas = tkinter.Canvas(frame1, width=450, height=450)
raw_turtle = turtle.RawTurtle(canvas)
scrollbar.config(command = canvas.yview)
canvas.config(yscrollcommand=scrollbar.set)
canvas.pack()
frame2 = Frame(window)
frame2.pack()
Label(frame2, text = "Enter a URL: ").pack(side = LEFT)
url = StringVar()
Entry(frame2, width = 50, textvariable = url).pack(side = LEFT)
Button(frame2, text = "Show Result", command = main).pack(side = LEFT)
window.mainloop()
히스토그램의 일부입니다
이
내가 모두 가지고있는 코드입니다. 텍스트 상자 대신 막대 그래프가 나타나게하려면 어떻게 조합해야합니까? 모든 입력에 미리 감사드립니다!편집 :
당신이 Tkinter를 캔버스에 사각형을 그리기보다는 거북이를 사용하려는 특별한 이유가 있습니까? –
그것은 숙제 문제이며 거북이 사용을 명시하고 있습니다. 내 편집에는 화면의 모양이 포함 된 스크린 샷이 포함됩니다. – annabananana7