[英]How to label each circle you draw when using the method create_oval() from module tkinter?
[英]How do I retrieve int data from a list to use in create_oval?
我正在嘗試使用create_oval在窗口的畫布上打印5個橢圓。 我似乎無法弄清楚如何從circle.dat文件中檢索int數據,以將它們分配給xpos,ypos和radius。 X和Y是橢圓在畫布上的中心位置。 半徑就是半徑。
這是我的代碼:
from tkinter import *
class Circles:
def __init__(self):
self.window = Tk()
self.window.title("My circles")
self.window.resizable(0,0)
self.viewer = Canvas(self.window, width=640, height=480, bg="white")
try:
open('circles.dat', 'r')
except:
print("File not found")
else:
self.file = open('circles.dat', 'r')
self.lines = self.file.readlines()
self.file.close()
for i in self.lines:
self.lines = i.split()
if self.lines != '/n':
for i in self.lines:
self.xpos = self.lines[1]
self.ypos = self.lines[2]
self.radius = self.lines[3]
self.window.viewer.create_oval(self.xpos, self.ypos, self.radius)
self.viewer.pack(side="top")
self.window.mainloop()
def main():
Circles()
main()
您沒有正確調用create_oval()
。
首先,應該是self.viewer.create_oval()
,注意我已經刪除了.window
。 其次,您期望繪制橢圓的方式不正確。 它是一個橢圓形,因此沒有圓的半徑。 這是應該如何稱呼的:
create_oval(x0, x1, y0, y1)
請參閱此處以獲取更多幫助。
接下來,如果要繪制所有圓而不是僅繪制最后一個圓,則需要縮進create_oval()
使其位於最終的for循環內。
最后,即使您必須進行一些調整,也請確保確實在索引1、2和3處找到您的圓數據。
from tkinter import *
class Circles:
def __init__(self):
self.window = Tk()
self.window.title("My circles")
self.window.resizable(0,0)
self.viewer = Canvas(self.window, width=640, height=480, bg="white")
try:
open('circles.dat', 'r')
except:
print("File not found")
else:
self.file = open('circles.dat', 'r')
self.lines = self.file.readlines()
self.file.close()
print(self.lines)
for i in self.lines:
self.lines = i.split()
if self.lines != '/n':
for i in self.lines:
self.xpos = self.lines[1]
self.ypos = self.lines[2]
self.radius = self.lines[3]
self.viewer.create_oval(self.xpos, self.ypos, self.radius, self.radius) #Testing, doubled up radius to get output
self.viewer.pack(side="top")
self.window.mainloop()
def main():
Circles()
main()
這項工作對我來說:
from tkinter import *
class Circles:
def __init__(self):
self.window = Tk()
self.window.title("My circles")
self.window.resizable(0,0)
self.viewer = Canvas(self.window, width=640, height=480, bg="white")
try:
open('circles.dat', 'r')
except:
print("File not found")
else:
self.file = open('circles.dat', 'r')
self.lines = self.file.readlines()
self.file.close()
for i in self.lines:
self.lines = i.split()
self.xpos = int(self.lines[0])
self.ypos = int(self.lines[1])
self.radius = int(self.lines[2])
self.viewer.create_oval(self.xpos-self.radius, self.ypos-self.radius, self.xpos+self.radius, self.ypos+self.radius)
self.viewer.pack(side="top")
self.window.mainloop()
def main():
Circles()
main()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.