我只和tkinter合作了几个月。我写了一些代码 使用'Frame'和'Grid'没有问题。我刚开始尝试使用'包' 并且我遇到此错误的问题:AttributeError:'Frame'对象没有属性'frame1'。
我做错了什么?
def generate_permutations(nums, res, l, r):
if l == r:
res.append(nums[:]) # <=== change
for i in range(l, r+1):
nums[i], nums[l] = nums[l], nums[i]
generate_permutations(nums, res, l+1, r)
nums[l], nums[i] = nums[i], nums[l]
In [158]: res=[];nums=[1,2,3]
In [159]: generate_permutations(nums, res,0,2)
In [160]: res
Out[160]: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]]
回溯:
追踪(最近一次通话): 文件“./tkerr3.py”,第7行,in frame1 = Frame(root).frame1.pack(side = LEFT,fill = BOTH) AttributeError:'Frame'对象没有属性'frame1'
答案 0 :(得分:2)
您似乎对如何调用pack
有错误的想法。
frame1 = Frame(root).frame1.pack(....)
Frame
对象没有属性frame1
,而是一旦Frame对象绑定到您的变量,您就想在下一行调用pack。
frame1 = Frame(root)
frame1.pack(....)
所有其他'打包'小部件也一样。
你还有一个错字等待
labe11=Label(frame1).labeL1.pack()
成功
label1=Label(frame1)
label1.pack()
这里代码的基本修正版本,回调被删除。
from tkinter import *
def dummy(): pass
root=Tk()
root.title("Spin Box")
root.resizable(0,0)
frame1=Frame(root)
frame1.pack(side=LEFT, fill=BOTH)
frame2=Frame(root)
frame2.pack(side=RIGHT, fill=BOTH)
labe11=Label(frame1)
labe11.pack()
label2=Label(frame2, text="How many Ticket?", font="bold")
label2.pack()
button1=Button(frame2, text="Get Tickets", font="bold", command=dummy)
button1.pack()
button2=Button(frame2, text=" Close ", font="bold", command=dummy)
button2.pack()
sp1=Spinbox(frame2, from_='1', to='5', bd=2, bg="white", state='readonly', relief=SUNKEN)
sp1.pack()
root.mainloop()