【发布时间】:2015-09-18 21:49:08
【问题描述】:
我正在尝试构建一个非常简单的 GUI,在此之前就已经完成了,从来没有问题。现在,在 Mac 上,我似乎无法让它工作。
这是代码
from Tkinter import *
class App:
def __init__(self, master):
# Gui Creation Block
frame = Frame(master, bd=2, relief=SUNKEN)
self.master = master
self.top = Frame(frame, height=150, width=700, relief=SUNKEN)
self.left = Frame(frame , height=400, width=200, relief=SUNKEN)
self.right = Frame(frame, height=400, width=500, relief=SUNKEN)
self.top.grid(row=0, column=0, columnspan=2)
self.left.grid(row=1, column=0)
self.right.grid(row=1, column=1)
# Sample Label
self.lbl = Label(frame, text="Log file locaction" )
self.lbl.grid(row=0, column=0)
self.top.pack()
frame.pack()
# Run the programs
root = Tk()
app = App(root)
root.mainloop()
一旦我运行它,CPU 使用率就会飙升到 100% 并一直保持在那里,直到我硬杀死那里运行的 python 实例。如果我注释掉标签位,那不会发生。那么这里有什么问题呢?
------更新-------
好的,更改了文件定位器是的,那是一个混乱的。并且从顶部删除 pack() 解决了 100% cpu 问题。
但是,它的行为仍然不像我想要的那样。
self.top = Frame(frame, bg="black", height=150, width=700, relief=SUNKEN)
self.left = Frame(frame , height=400, width=200, relief=SUNKEN)
self.right = Frame(frame, height=400, width=500, relief=SUNKEN)
应该创建 3 个块,我可以在其中放置其他小部件,但只要我添加第三个标签,就像这样;
# Sample Label
self.lbl = Label(self.top, text="Top" )
self.lbl.pack()
# Sample Label
self.lbl2 = Label(self.left, text="Left" )
self.lbl2.pack()
# Sample Label
self.lbl3 = Label(self.right, text="Right" )
self.lbl3.pack()
它将我的整个应用程序的大小调整到最小。 我认为内部小部件不会更改其父容器是错误的还是我犯了另一个错误?
【问题讨论】:
-
打包,网格在一起?仅使用网格方法!
-
你在
self.top上同时使用了pack和grid。 -
Tkinter Frame 会自动调整自身大小以适应其内容,但有一种方法可以覆盖该行为。我会尽快发布一些代码。
-
顺便说一句,在你的问题得到回答后大幅改变你的问题并不是一个好主意:你应该问一个新问题。但这次我会让你侥幸逃脱,因为你的第一个问题很简单。 :)