簡體   English   中英

NameError:tkinter python 未定義名稱“win”

[英]NameError: name 'win' is not defined with tkinter python

執行此代碼后,我收到錯誤 win not found 從不同功能運行 tkinter 很重要,因為它是一項家庭作業

代碼:

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")

追溯:

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

這是使用 tkinter 的一種非常奇怪的方式,無論如何我要判斷誰。 exec()使用globals()參數來使聲明成為global 這是 exec 的樣子:

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

然后最后, zosition()應該像這樣調用:

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

以防萬一您對它通常的樣子感到好奇:

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?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM