Po wykonaniu tego kodu uzyskuję błąd Wygraj Nie znaleziono Uruchamiania TKinter z różnych funkcji jest ważny jako lekcja domowa

Kod:

import tkinter as tk
from tkinter import *
def zui(kaj,saj):
    zun=kaj
    kaj=kaj+"=tk.Tk()"
    exec(kaj)
    saj=zun+".title('"+saj+"')"
    exec(saj)
def zabel(self,naj,iaj,oaj,baj,gaj,taj):
    spsp=self+"="+"Label("+naj+", text='"+iaj+"', bg='"+oaj+"', height="+gaj+", width="+taj+",fg='"+baj+"')"
    spsp=str(spsp)
    exec(spsp)
def zosition(qak,iak,nak):
    sspp=qak+".grid(row="+iak+", column="+nak+")"
    exec(sspp)
def zainzoop(tak):
    sft=tak+".mainloop()"
    exec(sft)
zui("win","zahid app")
zabel("label","win","hello world","white","black","4","10")
zosition("win","1","1")
zainzoop("win")

Śledzenie:

Traceback (most recent call last):
  File "c:/PyProjects/Patient Data Entry/hello.py", line 20, in <module>
    zabel("label","win","hello world","white","black","4","10")
  File "c:/PyProjects/Patient Data Entry/hello.py", line 12, in zabel
    exec(spsp)
  File "<string>", line 1, in <module>
NameError: name 'win' is not defined
-2
Zahid Wadiwale 14 październik 2020, 19:38

1 odpowiedź

Najlepsza odpowiedź

Jest to bardzo dziwny sposób na używanie TKININ, W każdym razie, kim jestem, aby ocenić. exec() obejmuje argument globals(), aby deklarację global. Tak wygląda exec:

exec(spsp,globals())
exec(sspp,globals())
exec(sft,globals())

A następnie w końcu, zosition() należy nazwać:

zosition("label","1","1")

Na wszelki wypadek, jak to normalnie wyglądałoby:

import tkinter as tk

kaj = tk.Tk()
kaj.title('zahid app')

spsp = tk.Label(kaj,text='Hello World',bg='white',fg='black',height=4,width=10)
spsp.grid(row=1,column=1)

kaj.mainloop() #much easier right?
2
Cool Cloud 14 październik 2020, 17:08