在tkinter和oop中使用canvas创建网格

2024-05-18 10:09:06 发布

您现在位置:Python中文网/ 问答频道 /正文

请原谅我的编程技巧(我是一个新手)。需要准备一个矩形网格内的画布框使用面向对象的方法,只使用一个类。但无法决定初始化和方法的定义。你知道吗

假设我有一个根作为基本窗口。我在里面画了一幅画布根。里面这个画布我需要有一个矩形网格,这些矩形的位置应该是用户选择的(以用户定义的方式创建矩形的功能已经解决了,所以没有问题)。层次结构如下…..root-->;Canvas(H1)-->;Machines(M1)这些矩形稍后需要使用父画布(不是根,而是嵌入它们的画布-H1)访问。我的问题是使用画布访问这些矩形。你知道吗

import tkinter as tk
from tkinter import ttk
from tkinter import font
from tkinter import *
import time

root=tk.Tk()
root.geometry("1860x820")

h=690
w=220

class Halls():
        def __init__(self,hallname,**kwarg):
                self.hallname=tk.Canvas(root,height=h,width=w)
                self.hallname.place(x=100,y=200)


        def machinecreation(self,machinename):
                self.machinename=self.hallname.create_rectangle
                                                   (20,20,40,40)

H1=Halls('H1')
H1.machinecreation('M1')

H1.M1()

root.update()

它给出了一个属性错误,因为没有属性machinename。它的基本错误与python有关,而与tkinter无关。我提到的代码是一个基本的。将添加许多大厅(画布)和机器(矩形)。基本上,它就像试图创建一个画布对象(Hall),然后访问一个方法。你知道吗


Tags: 方法fromimportself定义tkinter画布root