我在使用其他小部件填充这些标签时遇到问题,以下是当前状态的图像:
#imports
import Tkinter as tk #to be able to use its "Button" as tk.Button
import ttk
from Tkinter import *
from ttk import *
#The GUI
class MYWINDOW(Frame):
def __init__(self,master=None):
Frame.__init__(self,master) #run the Parent's initiation
self.InitUI() #construct the UI
def InitUI(self):
#make rows and columns visible with "minsize"
for row in range(5):
self.grid_rowconfigure(row,minsize=25)
for col in range(5):
self.grid_columnconfigure(col,minsize=10)
#make the parent window appears
self.grid()
#make 2 tabs: SAP2000, ETABS
n=Notebook(self.master)
n.grid(row=0,column=1)
#Construct tab ETABS
fetabs = Frame(n)
tetabs= n.add(fetabs,text='ETABS')
impetabs=tk.Button(tetabs,text="Import ETABS Model",width=20,relief=tk.RAISED)
impetabs.grid(row=0,column=1)
#Construct tab SAP2000
fsap = Frame(n)
tsap = n.add(fsap,text='SAP2000')
impsap=tk.Button(fsap,text="Import SAP2000 Model",width=20,relief=tk.RAISED)
impsap.grid(row=1,column=1)
seltwtmdfcmbox=ttk.Combobox(tsap,justify=tk.CENTER,state='readonly')
seltwtmdfcmbox.grid(row=1,column=3)
.pack()
或.place()
的建议,这就是我选择.grid()
的原因: - 此外,我之前尝试过.pack()
管理员,但是使用它会将标签本身分配到错误的位置,然后我使用.place(x=0,y=0,relheight=1,relweight=1)
与Notebook的对象n
正确制作标签定位,但小部件会随着.place(x=any value, y=any value)
或.grid_location(x=any value, y = any value)
的使用而消失。
然后我只用.place()
更改了.pack()
个小部件,并且.pack()
将小部件放在彼此的顶部,想象一下当Combobox占据同一个位置时按钮是多么无用隐藏它!所以我回到.grid(row = any value, column = any value)
所有小部件和.grid()
主窗口,然而,我得到了奇怪的结果,即标签无法识别小部件属于他们与异常1个按钮,其他小部件放在标签之外。
答案 0 :(得分:0)
创建一个继承自Frame
的类的重点是该类中的所有内容都在该框架内。你不是那样做的。
您正在将笔记本的主设备设置为与主设备的主设备相同。相反,它需要是框架:
n=Notebook(self)
类似地,当您想要在选项卡中放置窗口时,他们的主人需要是框架,而不是调用n.add
的结果。原因是,n.add(...)
返回None
。当您将其用作Combobox
和Button
的母版时,它们将成为根窗口的子项。